c++ :: 域操作符

作用域:变量在程序中的起作用范围
简单分为:全局作用域,局部作用域,语句作用域
作用域优先级:范围越小优先级越高
作用域运算符:"::"
如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上"::","::"称为作用域运算符.

  1. //作用域
  2. #include <iostream>
  3. using namespace std;
  4. int avar=10; //全局变量avar
  5. int main()
  6. {
  7. int avar=20; //局部变量avar
  8. cout<<"avar is: "<<avar<<endl; //访问局部变量
  9. avar=25; //1 //修改局部变量
  10. cout<<"avar is: "<<avar<<endl;
  11. cout<<"avar is: "<<::avar<<endl; //访问全局变量
  12. ::avar=30; //2 //修改全局变量
  13. cout<<"avar is: "<<::avar<<endl;
  14. return 0;
  15. }

输出

  1. avar is: 20
  2. avar is: 25
  3. avar is: 10
  4. avar is: 30
时间: 2024-10-11 05:31:24

c++ :: 域操作符的相关文章

关于C++中::(域操作符)的作用

(1)表示“域操作符”例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时,就要写成void A::f(),表示这个f()函数是类A的成员函数. (2)直接用在全局函数前,表示是全局函数例:在VC里,你可以在调用API 函数里,在API函数名前加:: (3)表示引用成员函数及变量,作用域成员运算符例:System::Math::Sqrt() 相当于System.Math.Sqrt()

转载——c++中冒号(:)和双冒号(::)的用法

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型. struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"pub

php的一些易错点

1.单引号与双引号的区别 一般用单引号或双引号标识一个字符串.单引号串与双引号串,在PHP中的处理是不同的.双引号中的内容可以被解释并被替换,单引号串中的内容则被作为普通字符处理. 例如: $str=6; echo "str is $str\n"; echo 'str is $str\n'; 注:单引号中输出的内容是"所见即所得"的,无论有无变量,都被当做普通字符原样输出. 说明:在定义简单的字符串时,使用单引号是一个更加合适的处理方式.如果使用双引号,php将花费

学习2--了解Cocos2d-x整个引擎框架

学习重点:HelloWorld工程,Cocos2D-X引擎框架 在vs2010中打开 学习1中建立好的HelloWorld工程,了解cocos2dx的生命周期和引擎框架. 1,生命周期 学习引擎已经写好了的生命周期,在AppDelegate.h中声明了三个虚函数: applicationDidFinishLaunching :实现导演(CCDirector)与场景(scene)初始化,applicationDidFinishLaunching -> 导演 -> 场景 -> 图层(laye

《Effective C++》资源管理:条款26-条款27

条款26尽可能延后变量定义式的出现时间 条款27尽量少做转型动作 条款26:尽可能延后变量定义式的出现时间 在程序中定义一个变量,当控制流(control flow)到达这个变量定义时,程序就要承受变量的构造成本,当控制流离开这个作用域时,程序也要承受析构成本.无论这个变量是否使用,都要承受这些成本.应该尽量避免这种情形.或许你认为自己不会这样使用,但也未必.例如要写一个加密函数,但加密的密码要足够长.如果密码太短,会抛出一个异常logic_error(c++标准库,**条款**54). std

《C和C++程序员面试秘笈[精品]》-笔记

2015-12-16 原文:在C++中可以通过域操作符"::"来直接操作全局变量 2015-12-16 原文:后缀式(i++)必须返回对象的值,所以导致在大对象的时候产生了较大的复制开销,引起效率降低.因此处理使用者自定义类型(注意不是指内建类型)的时候,应该尽可能地使用前缀式递增/递减,因为它天生"体质"较佳. 2015-12-16 原文:内建数据类型的情况,效率没有区别. 自定义数据类型的情况,++i效率较高. 2015-12-16 原文:当表达式中存在有符号类

C++ Primer 5 day0 2017年3月31日22:57:02

67.声明(extern)与定义 68.命名规范(_a1) 69.作用域 70.域操作符(::),全局作用域(没有名字) 71.一条声明语句由一个基本数据类型(basic type)和紧随其后的一个(declarator)列表组成.每个声明符命名了一个变量并指定该变量为与基本数据结构类型有关的某种类型 73.引用不是对象,不能定义指向引用的指针 74.解引用符(*) 74.空指针的初始化(nullptr)

C++--学习笔记012

20150516 头文件,以h为后缀名,包含函数,数据(包括数据类型定义),类等的声明. 在例子中多次引用"iostream"头文件,就是为了共享声明在其中的输入输出流对象 把子模块的声明放在头文件中,将具体的实现放在对应的源文件中 在一个程序的所有源代码中,源文件和头文件各司其职,共同完成一个完整的程序 源文件和头文件不仅在内容上有差别,在使用上也有很大的差别 不允许头文件引用源文件.虽然语法上可以. 头文件可以引用其他的头文件,构成新的头文件 头文件 stdafx.h就是多个头文件

C++,当类名和对象名称相同时会发生什么?

今天突发奇想,如果类名和由这个类声明的对象标识符相同时会发生什么,然后就测试了一下.如下: #include <iostream> using namespace std; class a { public: a() {cout << "a~~~~~" << endl;} }; int main(void) { a a; return 0; } 正常编译通过,运行结果也是正常的.仔细想想这种结果也是意料之中的,因为在main函数体中刚开始的时候遇到第