C++ 类中的static 成员函数
简介
同静态成员变量一样,静态成员函数在类里面定义,作用域为整个类,所有类的对象共享静态成员函数
特征
由于没有传递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
作者:cdsidi
出处:https://www.cnblogs.com/cdsidi/p/12638411.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】