c++ 静态成员函数和非静态成员函数的区别?
说明:一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。
它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。
例子:
class Sc{public:void nsfn(int a); //像声明Sc::nsfn(Sc *this , int a);static void sfn(int a); // 无this指针//....};void f(Sc &s){s.nsfn(10); // 转换为Sc::nsfn(&s , 10)s.sfn(10); // 转换为Sc::sfn(10)
}
函数nsfn()可被认为它声明为void Sc::nsfn(Sc* this , int a)。对nsfn()的调用,编译像注解的那样进行转换,s的地址作为第一个传递的参数。(你并不实际写该调用,由编译来实现。)
在函数内部,Sc::nsfn()对非静态成员的访问将自动把this参数作为指向当前对象的指针。而当Sc::sfn()被调用时,没有任何对象的地址被传递。因此,当访问非静态成员时,无this指针出错。这就是为什么一个静态成员函数与任何当前对象都无联系的原因。
c++ 静态成员函数和非静态成员函数的区别?相关推荐
- 类中的静态成员函数访问非静态成员变量
http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...
- c语言非静态成员引用方式,C++中静态成员函数访问非静态成员的实例
C++中静态成员函数访问非静态成员的实例 实现代码: #include /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可 ...
- 类中const函数及非const函数的调用规则
转自:点击打开链接 类中const函数及非const函数的调用规则 class Student { public:int getAge(){return m_age;}int getAge() con ...
- 静态成员变量和非静态成员变量的对比
静态成员变量和非静态成员变量的对比 1.存储的数据 静态成员变量存储的是所有对象共享的数据 非静态成员变量存储的是每个对象特有的数据 2.存储位置 静态成员变量是随着类的加载在方法区的静态区开辟内存了 ...
- C++类中const函数与非const函数的调用规则
class EX{public:void constFunction() const; }; 如上所示,通过将类成员函数声明为const,以表示这个函数不可以修改类中的成员变量. 建议将不可以修改数据 ...
- 静态成员函数访问非静态成员
有时候我们必须要使用静态成员函数, 比如把静态成员函数的指针传递到别的模块,以实现回调函数的机制,这个时候若不使用普通函数,则必须使用静态成员函数. 这时候我们有可能需要本类的非静态成员,具体做法很简 ...
- 静态成员函数和非静态成员函数的区别?
一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问. 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc ...
- C++中静态成员函数和非静态成员函数的区别
它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); / ...
- qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数
在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...
最新文章
- 独家解析英伟达最新GPU-A100对AI行业带来的影响
- 为什么苹果6没有录屏_为什么苹果手机受欢迎?因为没有一部安卓手机是“干净”的...
- 将DataRow转换为DataTable
- python关于sorted里面key,reverse以及lamdba,operator这几个鸟人
- java shell文件_JAVA执行bat文件和shell脚本文件
- Android实战开发小米主题下载工具
- 【JSP】EL表达式和JSTL
- oracle学习笔记-转
- IT冷知识(持续更新中)
- 嵌入式系统开发-麦子学院(15)-根文件系统
- 25岁文科女转行软件测试之路
- ajax——请求消息(request)和响应消息(response)
- 孙鑫《VC++深入详解》完整版PDF 下载
- java哪些类重写equals方法_Java自定义类中重写equals方法
- [转帖]一个老程序员的心理话(三)
- 【0173】推荐6款最好使用的PostgreSQL GUI工具
- 射频器件厂商RFMD与TriQuint达成合并协议
- ccache 3.1.9 发布,高速C/C++编译工具
- VIPS:基于视觉的Web页面分页算法
- 医用纤维和树脂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告