当前位置:  编程技术>c/c++/嵌入式

关于C++静态成员函数访问非静态成员变量的问题

    来源: 互联网  发布时间:2014-10-21

    本文导语:  代码如下:class a{public:  static FunctionA()  {     menber = 1;  } private:  int menber;}编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 me...

代码如下:

class a
{
public:
  static FunctionA()
  {
     menber = 1;
  }

private:
  int menber;
}


编译上述代码,出错。原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的非静态成员。

那要想访问怎么办呢?地球人都知道只要将:

代码如下:

int menber;
//change the line above to:
static int menber;

但是这个方法让我们不得不将static function内用到的成员变量都变成static的了,而且static的成员还要显式初始化,有没有更好的方法?答案是肯定的。代码说话:
代码如下:

class a
{
public:
  static FunctionA(a* _a)
  {
    _a-> menber = 1;
 cout

    
 
 

您可能感兴趣的文章:

  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • C++类静态成员与类静态成员函数详解
  • 类静态变量能定义在成员方法中吗?? 在线
  • 类的静态成员如果长时间不用,是否会被收集掉
  • 如何编译含有静态成员函数的C++文件?
  • 浅析PHP的静态成员函数效率更高的原因
  • C++类中的常数据成员与静态数据成员之间的区别
  • 深入C#实例成员和静态成员详解
  • C++类的静态成员初始化详细讲解
  • 深入理解c# static 静态数据成员和方法
  • C# 静态类与非静态类、静态成员的区别分析
  • C++ 类的静态成员深入解析
  • 深入C#中静态成员和实例变量详解
  • c++静态局部变量和静态函数示例
  • C++中关于[]静态数组和new分配的动态数组的区别分析
  • 深入理解C++的动态绑定与静态绑定的应用详解
  • C++的静态联编和动态联编详解
  • C++中静态存储区与栈以及堆的区别详解
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux中静态链接库调用了另一个静态链接库
  • 如何 用一个静态库 生成 另一个静态库
  • 请教:(static)静态变量和静态方法是什么意思?
  • 有把两个静态库.a合成一个静态库的简单方法吗
  • linux 生成静态库的时候怎么连接别的静态库
  • 静态博客 静态blog
  • 静态库动态库同时存在时,如何指定使用静态库
  • C# 静态方法与非静态方法的区别分析
  • 如何在一个静态链接库中链接另一个静态链接库?
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • PHP static局部静态变量和全局静态变量总结
  • c#静态方法和非静态方法详细介绍
  • 在静态上下文中不能引用非静态方法test(),天啊,为什么我的main()不能调用任何其它函数?
  • 静态函数,静态变量
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • 急求静态库引用静态库,该如何编译链接!!!
  • asp.net伪静态后真正的静态文件无法访问的解决方法
  • 请问在LINUX下怎么设置静态IP?我在虚拟机中不能设置静态IP怎么办?
  • makefile.am中生成.a静态库的同时,链接其他.a静态库或.la动态库的问题




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3