mshd.net
当前位置:首页 >> C++静态成员函数,怎么就访问私有变量了... >>

C++静态成员函数,怎么就访问私有变量了...

可以……类的所有成员函数都可以访问本类的私有成员,但是静态成员函数没有this指针,因此只能访问显式参数的私有成员……

如果私有变量是静态的,可以直接访问,或通过类名::变量名访问; 如果私有变量是实例成员,要先创建一个类的对象,再通过对象名.变量名访问,或先new一个对象,将new的返回值赋给一个指针,通过指针名->变量名访问或通过(*指针名).变量名访问。

#include using namespace std; class A { public: // getSum 声明要放在这里。否则默认是 private 而不是 public static int getSum(A a1,A a2); A(int a) { x=a; } private: int x; }; int A::getSum(A a1,A a2) { return a1.x+a2.x; } int ma...

#include using namespace std; class teacher { public: static int a; static void function(); }; int teacher::a = 10; // 静态数据成员要在main函数外面初始化 void teacher::function() { a ++; } void main() { cout

静态成员变量的位置是确定的,不要对象就可以直接访问。 比如下面代码的两种引用方法是等价的: class Test {public: static int ms_Data;};int main() { Test t; std::cout

因为你那个m_i和m_j是保护权限,改成公有就没有问题。静态成员函数不属于某个具体的对象,不可以访问非静态成员,你是传递了引用,视为外部调用,因此应该改成公有权限,但是依据设计原则,你最好改成通过设计get函数返回数据成员。

1.静态成员函数中不能调用非静态成员。 2.非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。 3.静态成员变量使用前必须先初始化(如int MyClass::m_nNu...

没有搞错 这是C++语法所决定的 C++类的静态成员变量和静态成员函数是所有实例共用的 这个和C的静态变量静态函数的概念不一样,需要理解 所以类静态函数访问非静态变量只有通过参数指明要访问的对象才可以 因为 i,j都是类对象当然可以访问私有成员...

非静态可以直接访问静态 静态不可以直接访问非静态 因为静态函数可以直接通过 类::函数 中方式调用,不用通过对象来调用函数,而非静态函数必须通过对象来调用,这里面还涉及到实例化对象时候的内存分配。

访问的意思就是读或者写,输出属于读出行为,自然不行。 静态成员函数不属于任何一个类对象,没有this指针,而非静态成员必须随类对象的产生而产生,所以静态成员函数"看不见"非静态成员,自然也就不能访问了 但是如果静态成员函数通过引用一个...

网站首页 | 网站地图
All rights reserved Powered by www.mshd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com