c++在静态方法中可以访问到私有属性和方法

c++在静态方法中可以访问到私有属性和方法

我们有一个类MyClass,其中包含私有属性和方法,并拥有一个静态方法

1
2
3
4
5
6
class MyClass {
int m_nNum;
void m_privFun() { };
public:
static void fun();
};

可以通过本类中的静态方法访问类内的私有属性和方法

1
2
3
4
5
void MyClass::fun() {
MyClass obj;
obj.m_nNum = 1;
obj.m_privFun();
}

但是不可以通过其他类中的静态方法访问本类中的私有属性和方法

1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass {
int m_nNum;
void m_privFun() { };
};
class MyClass1 {
public:
static void fun();
};
void MyClass1::fun() {
MyClass obj;
obj.m_nNum = 1; //错误的
obj.m_privFun(); //错误的
}

如图

其他类的静态方法访问私有属性

至于原因是什么呢?日后再论。。