C++里的静态成员函数不能用const的原因
来源:互联网 发布:小乔丹数据 编辑:程序博客网 时间:2024/06/06 03:19
static在c++中的第五种含义:用static修饰不访问非静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。
不能用const的原因:
这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数必须是含有this指针的类成员函数,函数调用方式为thiscall,而类中的static函数本质上是全局函数,调用规约是__cdecl或__stdcall,不能用const来修饰它。一个静态成员函数访问的值是其参数、静态数据成员和全局变量,而这些数据都不是对象状态的一部分。而对成员函数中使用关键字const是表明:函数不会修改该函数访问的目标对象的数据成员。既然一个静态成员函数根本不访问非静态数据成员,那么就没必要使用const了。
什么时候使用静态数据成员和静态函数呢?
定义数据成员为静态变量,以表明此全局数据逻辑上属于该类。
定义成员函数为静态函数,以表明此全局函数逻辑上属于该类,而且该函数只对静态数据、全局数据或者参数进行操作,而不对非静态数据成员进行操作。
static的第一种含义:修饰全局变量时,表明一个全局变量只对定义在同一文件中的函数可见。
static的第二种含义:修饰局部变量时,表明该变量的值不会因为函数终止而丢失。
static的第三种含义:修饰函数时,表明该函数只在同一文件中调用。
static的第四种含义:修饰类的数据成员,表明对该类所有对象这个数据成员都只有一个实例。即该实例归 所有对象共有。
static的第五种含义:修饰类成员函数,如上。
- C++里的静态成员函数不能用const的原因
- C++里的静态成员函数为何不能用const?
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)
- C++里的静态(static)成员函数(不能用const的原因+static在c++中的第五种含义)
- 有关static成员函数不能用const修饰的问题
- 静态成员函数不能用const修饰 ,也不能存取nonstatic数据
- CTRL+C CTRL C不能用的原因 zz
- c++中非静态函数不能用类名调用,为什么CWnd的成员函数GetDC()可以直接调用啊?
- C#&&Java-----C#中和Java中把主函数定义成静态成员函数的原因
- C++静态成员函数不能声明为const、volatile、virtual的原因 与 C++的对象模型
- 类的静态成员能用来干嘛
- 非静态成员函数后面的const作用
- 【C++】类的静态常量数据成员! static const
- C++的声明和定义(针对变量,const变量,C++函数,C函数,类,类的静态成员等)
- 【c++】类的静态成员函数
- windows media player不能用的原因
- echarts 地图插件不能用的原因
- WebStorm-快捷键都不能用的原因
- C#入门经典学习12-泛型
- ALSA移植命令记录
- 监听可编辑JComboBox内容改变实现验证
- AOP术语
- 函数invalidate
- C++里的静态成员函数不能用const的原因
- Linux下C++访问MySQL
- 一个简单Tcp通信的实现
- debug过程中CS寄存器莫名改变
- 从nginx角度看服务器多进程模型设计(一)
- HTML5的威胁:WebSocket与稳定的标准
- PHPnow图文安装过程详解
- object-c中将字符串nsstring转换成对应刻调用的函数对象
- 对informix发下牢骚