博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[C++基础]C++中静态成员函数如何访问非静态成员
阅读量:6828 次
发布时间:2019-06-26

本文共 1029 字,大约阅读时间需要 3 分钟。

#include 
/*静态成员函数只能访问静态数据成员、静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数访问。原因是:当前对象的地址(this)是被隐含地传递到被调用的函数的。但一个静态成员函数没有this指针,所以它无法访问非静态的成员函数。*/class a{public: static void FunctionA()//静态成员函数没有隐含的this自变量 { //menber = 1;//error C2597:对非静态成员"a::member"的非法引用 //printValue();//error C2352:“a::printValue”:非静态成员函数的非法调用 } void printValue() { printf("menber=%d\n",menber); }private: int menber;};/*如何访问非静态成员呢?1.把非静态成员修改成静态成员。如:static int member;//这就不会出错了,但有些不妥2.将对象作为参数,通过对象名来访问该对象的非静态成员*/class A{public: A():menber(10){} static void FunA(A& _A) { _A.menber = 123; _A.printValue(); } static void FunB(A* _A) { _A->menber = 888; _A->printValue(); } void printValue() { printf("menber=%d\n",menber); }private: int menber;};int _tmain(int argc, _TCHAR* argv[]){ A* m=new A(); m->FunB(m); A::FunB(m); A::FunA(*m); A b; b.FunA(b); A::FunB(&b); b.FunB(&b); m->FunB(&b); return 0;}

转载地址:http://unykl.baihongyu.com/

你可能感兴趣的文章
同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现...
查看>>
Node.js nvshens图片批量下载爬虫1.01
查看>>
tail -f 和 -F 的用法
查看>>
『参考』.net CF组件编程(2)——为组件添加事件
查看>>
java正则匹配的一个简单例子
查看>>
JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
查看>>
hdu 2686(状压dp)
查看>>
phpmailer使用gmail SMTP的方法
查看>>
【Android开发学习之路】
查看>>
Mac OS X 下安装使用 Docker
查看>>
【shiro】org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token
查看>>
java多线程通过管道流实现不同线程之间的通信
查看>>
第十三章 三种非对称加密算法总结
查看>>
WPF 元素的查找
查看>>
报错:ASP.NET Web API中找不到与请求匹配的HTTP资源
查看>>
Linux监控命令 - forever - ITeye技术网站
查看>>
转:自然语言处理(NLP)网上资源整理
查看>>
QT错误笔记-Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.
查看>>
日交易额百亿级交易系统的超轻量日志实现
查看>>
程序员常见的坏习惯,你躺枪了吗?
查看>>