下面列举了“非类成员”访问“类私有成员变量”的3种方法:
1.通过类公有成员函数set(), get()写、读私有成员;
2.通过类公有成员函数get()获取私有成员的指针或引用,对指针或引用操作;
1.通过类公有成员函数set(), get()写、读私有成员;
2.通过类公有成员函数get()获取私有成员的指针或引用,对指针或引用操作;
3.通过友元。
方法1,3都是经常使用的,方法2有点意外(写这篇blog也是因为它);不管怎么说,方法2,3都破坏了类的封装性。
#include <iostream>
using namespace std;
class Data
{
public:
Data():data(0){}
void set(int d)
{
data = d;
}
int &get()
{
return data;
}
friend void access();
private:
int data;
};
void access()
{
Data oD;
oD.data = 3;
cout<<oD.get()<<endl;
}
int main()
{
Data oD;
//1. set(), get()
cout<<oD.get()<<endl;
oD.set(1);
cout<<oD.get()<<endl;
//2. get & or *
int *iD = &(oD.get());
*iD = 2;
cout<<oD.get()<<endl;
//3. friend
access();
}