在C++中类外访问类的私有(private)或保护(protected)成员变量,有以下几种方法:
(1)通过在类中定义共有的成员函数,用成员函数去调用类的私有成员变量,在类外就可以实现对私有成员变量的访问;
(2)在类外实例化一个类的对象,定义一个类的指针,并将其赋值为该对象的地址,再定义一个整形指针变量,赋值为该类指针,那么对该指针变量解引用就得到第一个成员变量的值,还可以修改值;
(3)通过友元类或者友元函数访问。
class myclass
{
public:
friend void myfriend();
friend class myclassfriend;
void fun(int a_)
{
a = a_; //类内定义一个公有成员函数
}
private:
int a, b;
};
void myfriend()
{
myclass my;
my.a = 56;
}
class myclassfriend
{
public:
myclass m;
void myclassfriend_fun()
{
m.a = 56;
}
};
int main()
{
myclass myobj;
myobj.fun(56); // 类外通过成员函数去改变私有成员变量
myclass* p = &myobj;
int* pp = (int*)p;
*pp = 56; //此时a变为56
myfriend(); //通过友元函数改变
myclassfriend myobj2;
myobj2.myclassfriend_fun();//通过友元类改变
}