简介
同静态成员变量一样,静态成员函数在类里面定义,作用域为整个类,所有类的对象共享静态成员函数
特征
由于没有传递this 指针,静态成员函数只能访问static 成员 不能访问非static 成员
用法
1 class ex{
2 private:
3 int _non_static;
4 static int _static;
5 public:
6 int h(){
7 return _non_static;
8 }
9 static int g(){
10 //_non_static=0; (不正确)
11 //静态成员函数不能访问非静态成员变量
12 return _static;
13 }
14 static int f(){
15 //h(); (不正确)
16 //静态成员函数不能访问非静态成员函数
17 return g();
18 }
19 };
20 int ex::_static= 0;//static 成员变量可以在类外改变
21 int main(){
22 ex var;
23 ex* pointer=&var;
24 var.f();//方式一:点运算符
25 pointer->f();//方式二:箭头运算符
26 ex::f();//方式三: 类名:静态成员函数名
27 return 0;
28 }
这里要注意:static函数在类内声明、类外定义时,类内要写明static 类外则不能加static关键字,如下,会报错
1 class ex{
2 public:
3 static int f();
4 };
5 /*错误的示范
6 static int ex::f(){
7 return 0;
8 }
9 */
10 //应该这样写
11 int ex::f(){
12 return 0;
13 }
14 int main(){
15 return 0;
16 }
因为在类体外声明static 会将成员函数作用域扩大到文件,比类的域要大,所以会报错
[Error] cannot declare member function ... to have static linkage
原文链接: https://www.cnblogs.com/cdsidi/p/12638411.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/195386
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!