c++私有成员的访问
(1)友元函数
代码:略
(2)同一个类的实例之间可以通过函数来访问。
class A { private: int value; public: A(int a) { value = a; } void printA(A O) { cout << O.value << endl; cout << value << endl; } }; int main() { A a(10); A b(11); b.printA(a); system("pause"); return 0; }
这里实例对象b就可以通过成员函数来访问实例对象a的私有成员
反例:
class A { private: int value; public: A(int a) { value = a; } void printA(A O) { cout << O.value << endl; cout << value << endl; } }; class B { public: void printB(A a) { cout << a.value << endl;//编译不通过 } }; int main() { A a(10); B b; b.printB(a); system("pause"); return 0; }
(3)子类通过继承可以访问父类的私有成员
方法1:子类继承的公有成员函数SetValue对父类的私有成员进行了访问
方法2:通过改变子类对象的指针来访问,因为继承的时候把父类的私有成员继承下来了,但是隐藏掉了,所以不能通过编译器直接访问,可以以指针的形式来访问。
代码示例:转自别处(侵删)原文链接:https://blog.csdn.net/qq_41884002/article/details/91875225
#include <iostream> class Base { private: int x; public: int y; void init_Base(); }; void Base::init_Base() { std::cout<<"x ="<<this->x<<std::endl; } class Sub:public Base { public: int a; int b; }; void main() { Sub sub; int* pr = (int*)⊂ *pr = (int)9; sub.init_Base(); }

浙公网安备 33010602011771号