说明:一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。

它们的根本区别在于静态成员函数没有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++ 静态成员函数和非静态成员函数的区别?相关推荐

  1. 类中的静态成员函数访问非静态成员变量

    http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...

  2. c语言非静态成员引用方式,C++中静态成员函数访问非静态成员的实例

    C++中静态成员函数访问非静态成员的实例 实现代码: #include /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可 ...

  3. 类中const函数及非const函数的调用规则

    转自:点击打开链接 类中const函数及非const函数的调用规则 class Student { public:int getAge(){return m_age;}int getAge() con ...

  4. 静态成员变量和非静态成员变量的对比

    静态成员变量和非静态成员变量的对比 1.存储的数据 静态成员变量存储的是所有对象共享的数据 非静态成员变量存储的是每个对象特有的数据 2.存储位置 静态成员变量是随着类的加载在方法区的静态区开辟内存了 ...

  5. C++类中const函数与非const函数的调用规则

    class EX{public:void constFunction() const; }; 如上所示,通过将类成员函数声明为const,以表示这个函数不可以修改类中的成员变量. 建议将不可以修改数据 ...

  6. 静态成员函数访问非静态成员

    有时候我们必须要使用静态成员函数, 比如把静态成员函数的指针传递到别的模块,以实现回调函数的机制,这个时候若不使用普通函数,则必须使用静态成员函数. 这时候我们有可能需要本类的非静态成员,具体做法很简 ...

  7. 静态成员函数和非静态成员函数的区别?

    一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问. 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc ...

  8. C++中静态成员函数和非静态成员函数的区别

    它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this. 例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); / ...

  9. qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数

    在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...

最新文章

  1. 独家解析英伟达最新GPU-A100对AI行业带来的影响
  2. 为什么苹果6没有录屏_为什么苹果手机受欢迎?因为没有一部安卓手机是“干净”的...
  3. 将DataRow转换为DataTable
  4. python关于sorted里面key,reverse以及lamdba,operator这几个鸟人
  5. java shell文件_JAVA执行bat文件和shell脚本文件
  6. Android实战开发小米主题下载工具
  7. 【JSP】EL表达式和JSTL
  8. oracle学习笔记-转
  9. IT冷知识(持续更新中)
  10. 嵌入式系统开发-麦子学院(15)-根文件系统
  11. 25岁文科女转行软件测试之路
  12. ajax——请求消息(request)和响应消息(response)
  13. 孙鑫《VC++深入详解》完整版PDF 下载
  14. java哪些类重写equals方法_Java自定义类中重写equals方法
  15. [转帖]一个老程序员的心理话(三)
  16. 【0173】推荐6款最好使用的PostgreSQL GUI工具
  17. 射频器件厂商RFMD与TriQuint达成合并协议
  18. ccache 3.1.9 发布,高速C/C++编译工具
  19. VIPS:基于视觉的Web页面分页算法
  20. 医用纤维和树脂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. S形曲线-斜坡指(S形加减速)
  2. implicit feedback
  3. 2022icpc昆明
  4. 【笨木头Unity】入门之旅010(完结):Demo之四处找死(五)_UI
  5. endnote按照apa6th格式复制_APA Format 6th Edition TemplateAPA格式模板第六版.doc
  6. wo de wen jian
  7. R语言科学计数法详解:digits和scipen设置
  8. openjudge 1.5.18 鸡尾酒疗法
  9. 【牛客网OJ题】人民币转换
  10. 30天自制操作系统:第8天:鼠标控制与32位模式切换