因为最近项目很忙,所以只是暂时做个简单的笔记,以后有时间了我会再重新做个整理:

顺便附上一个网站,可以在线写代码的,适合进行小规模的代码测试(做开发当然是不可能的):

点击打开链接

在平时的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;
}

c++中的变量作用范围相关推荐

  1. python的变量如何理解_Python程序中变量作用范围应该如何理解?

    初学Python,自己尝试着写了一个爬虫,主要代码如下import json import scrapy from bs4 import BeautifulSoup from docx import ...

  2. c语言中常见的变量,C语言中的变量详解

    先说说变量的作用域,比如,在函数中,形参变量只是在被调用期间才分配内存单元,调用结束立即释放.这就说明形参变量只有在函授内才是有效的,离开该函数就不能再使用了. 这种变量有效性的范围称为变量的作用域. ...

  3. Python中的变量、引用、拷贝和作用域

    在Python中,变量是没有类型的,这和以往看到的大部分编辑语言都不一样.在使用变量的时候,不需要提前声明,只需要给这个变量赋值即可.但是,当用变量的时候,必须要给这个变量赋值:如果只写一个变量,而没 ...

  4. python3 模块调用其他类的方法_python类的函数调用 python如何引用其他模块中类的方法中的变量?...

    python中类内部的函数可以互相调用吗? python 如何调用类的方法要遇上一个人只要用一分钟的时间:要喜欢上一个人只要用一句话的时间:要爱上一个人只要用一天的时间:但要忘记一个人却要用一生的时间 ...

  5. lua认识(lua)中的变量

    认识lua中的变量--[[在lua所有变量都不需要在使用前声明,同样不需要指定变量的类型(int,char,string)因为变量的类型 取决于用户给它赋的值.lua中的所有变量的数据类型不是显示的, ...

  6. C语言-----函数中的变量

    目录 1.局部变量与全局变量 1.1 局部变量 1.2 全局变量 2.变量的存储类别 2.1 自动类型 (auto) 2.2 寄存器类型 (register) 2.3 静态类型 (static) 2. ...

  7. java程序中的变量_Java中的变量

    实例变量的作用域与对应实例的生存范围相同,而类属性的作用域与这个类的生存范围相同.成员变量无须显式初始化,系统会默认初始化. 与成员变量不同的是,局部变量除了形参之外,不必须显式初始化,否则不可以访问 ...

  8. java中成员变量和全局变量的区别_成员变量与全局变量的区别

    全局变量:也叫成员变量,是指在类中定义的变量:它在整个类中都有效 全局变量又可分为:类变量和实例变量 1.类变量:又叫静态变量  用static修饰  它可以直接用类名调用  也可以用对象调用   而 ...

  9. html img调用js,html调用js变量 如何在html中输出js文件中的变量

    html页面代码中怎么调用js变量?html页面代码中怎么调用js变量,例如 在html代码中插入js代码: a=取浏览你把index1.js 中的onReady 去掉,把index1.js改成 fu ...

最新文章

  1. (OCR论文)Mask TextSpotter V3机翻
  2. 泛型(Generic)-反射泛形-Dao
  3. Linux kill指令和killall指令
  4. 查表法生成流水号的示例.sql
  5. Asp.net MVC Filter监控页面性能和运行时间
  6. vi 按了ctrl+s怎么办
  7. 支持回调处理 php函数,PHP支持回调的函数有哪些?
  8. repo 获取各个库的tag代码或者分支代码
  9. SAP License:作业类型作为成本对象
  10. matlab 指定函数拟合,matlab中曲线拟合问题---使用指定函数进行曲线拟合
  11. 人脸方向学习(四):Face Recognition-SphereFace解读
  12. 跨域两种解决方案CORS以及JSONP
  13. 拓端tecdat|Python银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机svm分析营销活动数据
  14. 2019-1-3 每日一记
  15. PCM音频压缩A-Law算法,uLaw
  16. python 查询oracle数据库返回具体字段名
  17. 大数据分析师·人才培养·高薪起航
  18. 【Java编程思想】读书笔记(二)第六章---第十章
  19. 湖北文理学院数学与计算机科学学院,以德为本严要求 以勤为先勇创新——记湖北文理学院数学与计算机科学学院执行院长 吴 钊-湖北文理学院校报电子版《湖北文理学院报》...
  20. Go 语言 入门 基于 GoLand 2023.1 创建第一个Go程序

热门文章

  1. Nodejs--url模块
  2. Springboot搭建web项目
  3. ubuntu安装vsftpd
  4. nginx 网站目录重写
  5. 某中国500强企业BI系统成功应用案例
  6. 使用Silverlight for Embedded开发绚丽的界面(3)
  7. WINCE6.0文件系统及存储管理器
  8. mysql5.7 首次登陆_mysql5.7.20第一次登录失败的快速解决方法
  9. MEDC2007北京游记 - WindowsMobile Ophone
  10. 面试时,当你有权提问时,别客气,这是个逆转的好机会(内容摘自Java Web轻量级开发面试教程)...