c++中的变量作用范围
来源:互联网 发布:中山淘宝摄影培训班 编辑:程序博客网 时间:2024/06/11 05:45
因为最近项目很忙,所以只是暂时做个简单的笔记,以后有时间了我会再重新做个整理:
顺便附上一个网站,可以在线写代码的,适合进行小规模的代码测试(做开发当然是不可能的):
点击打开链接
在平时的c++中:
#include <iostream>using std::cout;using std::cin;int a = 1;int main(){ cout << a; return 0;}我们知道,在main函数外定义一个变量,在main函数里面可以直接调用(其他函数也是),相当于是一个全局变量。当然,如果将变量定义在main里面,那么main外面的函数自然是无法调用的。在这里我们不讨论跨文件调用的情况(extern这个以后再说)
#include <iostream>using std::cout;using std::cin;int a = 1;int main(){ a = 2; cout << a; return 0;}我们先看这样一种最简单的情况,a=2,这是将上面的a的值直接覆盖掉了,相当于更新了变量a的值。
#include <iostream>using std::cout;using std::cin;int a = 1;int main(){ int a = 2; cout << a; return 0;}这里的情况,在main里面的a前面加了个int,这其实是定义了一个局部变量,这个局部变量只在main里面生效,事实上外面的a=1不是被覆盖了,而是压根儿就没有被调用到。相信这种情况也是非常好理解的。
#include <iostream>using std::cout;using std::cin;int a = 1;int main(){ a = 2; cout << ::a; return 0;}接着我们再看,这个时候在输出的时候增加了::,这样一来,输出的a就不是函数内部的局部变量了,而是外面的全局变量,就好像一个类的静态成员变量,事实上所有的文件都可以看成是一个class,如果想要调用函数外面的全局变量就可以采用::符号,这个在平时是不需要的,因为函数会在执行的时候先查找内部有没有定义该变量,如果没有,那么就在该文件里寻找,如果在函数内部已经找到了就不会再去函数外面寻找了,所以如果在函数内部定义了某个同名变量,又想要访问外面的变量,那就使用::即可。
再说一个关于class的变量名称问题:
#include <iostream>using std::cout;using std::cin;class Slime{ public:
//史莱姆的默认攻击力是25,默认生命值是30。 Slime(int Attack = 25, int Health = 30){ attack = Attack; health = Health; } int getAttack(){ return attack; } int getHealth(){ return health; } private: int attack; int health;};int main(){ Slime one(20,50); cout << one.getAttack() << '\n'; cout << one.getHealth(); return 0;}在这里我们定义了一个非常简单的史莱姆类,并且实例化了一个one对象,不过在史莱姆的构造函数里面,我们将形参用大写开头,然后将其值传给private的值保存起来。这种方法需要形参的名字和private里面需要保存的实参的名字不同,否则保存就会失败,那么可不可以同名呢?答案是可以的,也是利用上面的方法使用::符号如下:
#include <iostream>#include <memory>using std::cout;using std::cin;class Slime{ public: Slime(int attack = 25, int health = 30){ Slime::attack = attack; Slime::health = health; } ~Slime(){ //cout << "删了"; } int getAttack(){ return attack; } int getHealth(){ return health; } private: int attack; int health;};int main(){ Slime one(20, 50); Slime* two = new Slime; cout << one.getAttack() << '\n'; cout << one.getHealth() << '\n'; cout << two->getAttack() << '\n'; cout << two->getHealth() << '\n'; //delete two; //two = NULL; return 0;}
阅读全文
0 0
- c++中的变量作用范围
- C/C++ 变量作用范围
- C语言中变量的作用范围
- C语言变量的作用范围
- 黑马-C语言-函数,变量,及变量作用范围
- 变量作用范围
- Javascript变量作用范围
- php变量作用范围
- 变量及其作用范围
- 变量作用范围级别
- 工程中的变量作用范围 static(待补充)
- Perl中的变量作用范围 local, my, our与全局变量
- Perl中的变量作用范围 local, my, our与全局变量
- 重新学习C语言笔记 ---变量作用范围
- 内存变量的作用范围
- javaScript变量的作用范围
- Java变量的作用范围
- 02 变量的作用范围
- js对字符串编码,解码 .net对字符串编码,解码
- 2-5浙大版《数据结构(第2版)》题目集
- MFC中CString,C++中string,c风格字符串
- iOS 地图实现一个大头针在屏幕中心不随地图的拖动而移动
- Leetcode 255 Verify Preorder Sequence in Binary Search Tree
- c++中的变量作用范围
- 在信息时代,亚媒网泛家居行业要如何发展?
- Java多线程中join方法_保证线程执行完后再销毁activity
- java基础教程:数据类型(6)
- 理解java中==、equals()、hashCode()
- Kotlin学习记录(一)——搭建环境到输出Hello World!
- Pandas GroupBy对象 索引与迭代
- C/C++时间函数time/localtime/mktime/ctime/strftime使用方法
- Java常量的应用