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

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

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

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

#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...

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

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

1.static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其进行初始化。 2.静态成员不能在类定义里边初始化,只能在class body外初始化。 3.静态成员仍然遵循public,private,protected访问...

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

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

static 成员,是在类的实力没有创建前就存在的。 其他的成员必须是在类的实例创建才存在。 例如: class A { public: static int a; static void func() {//静态函数在类的实例创建之前就存在的, 在实例创建之前,根本没有为b开辟空间 printf("...

这是 singleton 的一种写法。目的是让该类只有一个实例对象。 这种写法一般用于限定某类只能存在一个且唯一个对象的时候。一般程序都不推荐使用 singleton 方式。

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