C++语言作用域符号是两个冒号:: ,相信大家不陌生,在看代码是一定会有很多地方有这::符号。
作用域,如果不理解是什么,可以先理解成起作用的范围。书上都是写作用域,这样比较书面话,如写成作用范围就不哪么好听。
C++语言支持3种作用域:
1.局部作用域(local scope)
每段语名块都包含一个局部作用域,如函数,循环等等。局部变量只在局部内有效,超出局部作用域是不可见的。写段代码比较好理解:
1 2 3 4 5 6 7 8 9 10 11 12 |
int main() { int i = 0 //i在整个main函数内可见有效 cout<<i<<endl; for(int j=0;j<5;j++){ cout<<j<<endl; //j在for循环体内可见 } cout<<j<<endl; //error错误,j没有定义,for循环结束后j不可见 cout<<i<<endl; //i可见 } |
2.名字空间作用域(namespace scope)?
如果要访问已定义的名字空间内的成员,使用时要告知编译器具体调用哪个就可以。
名字空间具体内容,可以看这篇:C++名字空间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
namespace A { void fun(){cout<<"A名字空间 fun函数"<<endl; } } namespace B { void fun(){cout<<"B名字空间 fun函数"<<endl; } } int main() { A::fun(); B::fun(); return 0; } |
3.类作用域(class scope)
定义一个类,就相当于引入了独立的类作用域。类作用域的范围包括类的定义 体和所有的成员。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class A { public: A(); ~A(); }; A::A() //类A中的A()构造函数 类域 { } A::~A() //类A中的~A()析造函数 类域 { } |
当成员函数定义到类外时,就要在成员函数前面加前缀类名,告诉编译器这个是哪个类的成员函数。之前也许都写过这样的代码,但不知道为什么要加,现在应该都明白了这是类作用域。
《C++都支持哪些作用域》上有2条评论
评论已关闭。