静态成员函数为什么不能访问本类中的非静态成员?
可以说,静态成员函数与非静态成员函数的根本区别是:非静态成员函数有this指针,静态成员函数并不属于某一对象,它与任何对象都无关,静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。假如在一个静态...
为什么静态成员不能访问非静态成员
简单点说:静态成员属于类,不需要生成对象就存在了.而非静态需要生成对象才产生.所以静态成员不能直接访问.下面说说静态的特点: 1.随着类的加载而加载 也就是,说静态会随着类的消失而消失,说明静态的生命周期最长 2.优先于对象的存在 明确一点:静态是先存在的对象是后存在的 3.被所有对象共享 4....
C++, 为什么一个静态函数A,无法调用非静态函数B?
\/*这是因为类的普通函数是在对象被创建的时候才为它分配空间的。所以你上面为什么会出错呢。你在静态函数里面调用了类的普通函数,你这时候创建了类的对象了吗?很显然没有。因为你没有实例化,所以这时候系统还没有为它分配空间。所以就造成了出错。*\/ ...
静态成员函数不可以访问类中的成员变量
静态成员函数不属于任何一个类对象,没有this指针,而非静态成员必须随类对象的产生而产生,所以静态成员函数"看不见"非静态成员,自然也就不能访问了 但是如果静态成员函数通过引用一个对象,是可以直接访问成员的,也体现了它成员函数的特权。比如 class A{int m_i;public:static void f(){m_i=66...
C++静态成员函数,怎么就访问私有变量了...
C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。左例中分别声明了成员函数void add(),成员变量int a,和静态成员函数 static void staticfunc(),静态成员变量 static int sa.在...
Java中 无法从静态上下文中引用非静态 变量 this
在类DuiLie的前面加上static,因为static void main函数是静态函数,只能调用静态成员,不能调用动态成员
静态成员函数能不能访问非静态数据成员
没有搞错 这是C++语法所决定的 C++类的静态成员变量和静态成员函数是所有实例共用的 这个和C的静态变量静态函数的概念不一样,需要理解 所以类静态函数访问
静态成员函数怎么引用该类中的非静态成员函数
静态成员函数可以直接引用该类的 静态数据成员 和 静态成员函数,但不能直接引用 非静态数据成员 和 非静态成员函数,否则编译报错。如果要引用,必须通过参数传递的方式得到对象名,然后再通过对象名引用#include<iostreamusingnamespacestd;classMyclass{private:intm;\/\/ 非静态数据成员staticintn;\/\/...
c++ 静态成员函数能调用非静态成员吗
静态成员的定义是针对类的一个对象而言的,即该类的每个对象都有一套自己的静态成员变量和函数。如果想要静态成员函数调用非静态成员,那就必须有一个这个类的instance(实例)才行,例如:class foo{public:foo():m_i(0){}static void add1(foo& instance); \/\/实例传入函数static void add1();\/...
无法从静态上下文中引用非静态 变量this为什么?怎么改?谢了 !
在静态成员函数里面是不允许访问实例的this变量的:f.addWindowListener(new (this));你应该把 my 设计成单例模式的类 public class my extends WindowsAdapter { static my instance;public static my getInstance() { if (instance == null) instance = new my();return instance;} private my()...