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++中静态成员函数访问非静态成员的实例相关推荐

  1. C语言主程序如何引用外部源代码中的函数

    Introduction 代码要实现比较复杂的功能时,往往会包含非常多的函数. 当我们想再向其中添加其他功能或修改一些功能时,主程序所在的源代码会越来越冗长,查找并准确地修改某功能对应的函数也变得十分 ...

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

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

  3. 静态成员函数访问非静态数据成员【C++】

    静态数据成员 定义格式: static 类型名 静态数据成员名 ; 详解:由于静态数据成员属于本类的所有对象共享,不属于特定类对象,因此在未产生类对象时作用域就可见,即:在未产生类的实例时,就可以对它 ...

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

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

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

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

  6. Excel2010中VLOOKUP函数跨工作簿使用实例:

    Excel2010中VLOOKUP函数跨工作簿使用实例: 首先我们打开Excel主页面,其中有三个sheet表:我们将表三"图书编目表"中的"图书编号"导入到表 ...

  7. 二叉树的非递归遍历(前序中序后序非递归C语言)

    前两天做数据结构实验,要求用非递归算法遍历二叉树.只知道用栈来储存数据,具体算法还不太清楚.经过两天的搜索,看到网上很多种解法,很多解法都是用C++来写的算法,一直找不到用C语言写的算法,所以就总结了 ...

  8. C++静态成员函数访问非静态成员的几种方法

    大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会"自动"帮你把这个this指针加到函数形参里去.当然在C++灵活性下面,类还 ...

  9. 操作系统 非连续分配_操作系统中的连续和非连续内存分配

    操作系统 非连续分配 In this article, we will learn about the different types of memory management techniques ...

最新文章

  1. js实现图片虚化_js canvas画布实现高斯模糊效果
  2. Ardino基础教程 24_RGB全彩LED
  3. Android常用的几种资源
  4. 第二阶段 铁大Facebook——十天冲刺(六)
  5. 解决ActionBar中的不显示View控件
  6. 64位服务器IIS不能识别32位framework版本。IIS没有Asp.net切换界面的解决办法。
  7. HOW2J 全套教程整理:Java、前端、数据库、中间件、第三方、项目、面试题
  8. C# 4.0 实现 Method Missing
  9. HALCON 21.11:深度学习笔记---分类(10)
  10. JVM之Tomcat的优化
  11. 易简无人机巡检照片处理系统(一) —— 巡检作业流程
  12. UE4插件研发 So Easy
  13. 企业微信自建应用审批接口开发
  14. qt 绘图工具(一)
  15. 网页打开慢,响应时间慢,如何定位这个问题?
  16. 使用python将csv文件数据可视化
  17. 计算机网络谢希仁课后习题
  18. 面向对象:待到山花烂漫时,她在丛中笑
  19. C语言程序设计(第三版)何钦铭著 习题4-4
  20. AGV机器人出圈:助力产线物流自动化

热门文章

  1. 记录焊接七管超外差收音机遇到的问题
  2. 为我们的snap应用添加一个独特的图标
  3. windows系统双网卡内外网同时使用
  4. 计算机技术会议,第五届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2020)...
  5. 中国电信携手极视角亮相 BEYOND EXPO,澳门特区行政长官贺一诚莅临视察
  6. 手机的组成==软件人员需要了解的一些名词==相关的部门及其人员==入门相关
  7. 计算机上表格怎么算减法,excel表格中怎么计算减法、除法、乘法
  8. 清华山维EPS二次开发-距离平行线
  9. CL4054D 500mA线性锂离子电池充电器
  10. sisco路由器的升级