c语言非静态成员引用方式,C++中静态成员函数访问非静态成员的实例
C++中静态成员函数访问非静态成员的实例
实现代码:
#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;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
c语言非静态成员引用方式,C++中静态成员函数访问非静态成员的实例相关推荐
- C语言主程序如何引用外部源代码中的函数
Introduction 代码要实现比较复杂的功能时,往往会包含非常多的函数. 当我们想再向其中添加其他功能或修改一些功能时,主程序所在的源代码会越来越冗长,查找并准确地修改某功能对应的函数也变得十分 ...
- 类中的静态成员函数访问非静态成员变量
http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...
- 静态成员函数访问非静态数据成员【C++】
静态数据成员 定义格式: static 类型名 静态数据成员名 ; 详解:由于静态数据成员属于本类的所有对象共享,不属于特定类对象,因此在未产生类对象时作用域就可见,即:在未产生类的实例时,就可以对它 ...
- 类中const函数及非const函数的调用规则
转自:点击打开链接 类中const函数及非const函数的调用规则 class Student { public:int getAge(){return m_age;}int getAge() con ...
- C++类中const函数与非const函数的调用规则
class EX{public:void constFunction() const; }; 如上所示,通过将类成员函数声明为const,以表示这个函数不可以修改类中的成员变量. 建议将不可以修改数据 ...
- Excel2010中VLOOKUP函数跨工作簿使用实例:
Excel2010中VLOOKUP函数跨工作簿使用实例: 首先我们打开Excel主页面,其中有三个sheet表:我们将表三"图书编目表"中的"图书编号"导入到表 ...
- 二叉树的非递归遍历(前序中序后序非递归C语言)
前两天做数据结构实验,要求用非递归算法遍历二叉树.只知道用栈来储存数据,具体算法还不太清楚.经过两天的搜索,看到网上很多种解法,很多解法都是用C++来写的算法,一直找不到用C语言写的算法,所以就总结了 ...
- C++静态成员函数访问非静态成员的几种方法
大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会"自动"帮你把这个this指针加到函数形参里去.当然在C++灵活性下面,类还 ...
- 操作系统 非连续分配_操作系统中的连续和非连续内存分配
操作系统 非连续分配 In this article, we will learn about the different types of memory management techniques ...
最新文章
- js实现图片虚化_js canvas画布实现高斯模糊效果
- Ardino基础教程 24_RGB全彩LED
- Android常用的几种资源
- 第二阶段 铁大Facebook——十天冲刺(六)
- 解决ActionBar中的不显示View控件
- 64位服务器IIS不能识别32位framework版本。IIS没有Asp.net切换界面的解决办法。
- HOW2J 全套教程整理:Java、前端、数据库、中间件、第三方、项目、面试题
- C# 4.0 实现 Method Missing
- HALCON 21.11:深度学习笔记---分类(10)
- JVM之Tomcat的优化
- 易简无人机巡检照片处理系统(一) —— 巡检作业流程
- UE4插件研发 So Easy
- 企业微信自建应用审批接口开发
- qt 绘图工具(一)
- 网页打开慢,响应时间慢,如何定位这个问题?
- 使用python将csv文件数据可视化
- 计算机网络谢希仁课后习题
- 面向对象:待到山花烂漫时,她在丛中笑
- C语言程序设计(第三版)何钦铭著 习题4-4
- AGV机器人出圈:助力产线物流自动化
热门文章
- 记录焊接七管超外差收音机遇到的问题
- 为我们的snap应用添加一个独特的图标
- windows系统双网卡内外网同时使用
- 计算机技术会议,第五届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2020)...
- 中国电信携手极视角亮相 BEYOND EXPO,澳门特区行政长官贺一诚莅临视察
- 手机的组成==软件人员需要了解的一些名词==相关的部门及其人员==入门相关
- 计算机上表格怎么算减法,excel表格中怎么计算减法、除法、乘法
- 清华山维EPS二次开发-距离平行线
- CL4054D 500mA线性锂离子电池充电器
- sisco路由器的升级