先附上代码:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class person {
private:
string name;
int age;
string id;
public:
void writename(string _name) {
name = _name;
}
string *readname() {
cout << name << endl;
return &name;
}
};
int main()
{
person p;
p.writename("lianziyan");
string* add = p.readname();
*add = "liuanman";
p.readname();
system("pause");
return EXIT_SUCCESS;
}
person类中,readname函数返回的是成员name的地址。在主函数中利用add变量接受该地址,再通过解引用修改name变量。
此种方法确实可以实现在主函数中修改private成员,但是有违C++封装的基本性质,有违基本的安全性原则。
实质上,在C++语言中,减少指针的使用是很有必要的