对象的成员变量能否被修改
有一对象A a, 内有一成员变量m_a, 调用它的函数GetA(){return m_a;}
现在要将将m_a传给一个void*的形参,&a.GetA() 这样传参是否合理,函数内如果改变了实参m_a的值会不会
改变对象的成员变量的值
[解决办法]
这样做得看GetA()的返回值是不是引用
不是引用,这么做不是不合理,而是不合法。
是引用,可以这么做,m_a的值会被改变。但这么做会破坏类的封装。
[解决办法]
GetA返回的是什么? 是引用还是? 如果是m_a的引用那可以取得地址,
而且可以修改值.但一定注意查看文档看这个类允不允许你这样做.
但如果是比如m_a是个int:
int GetA() { return m_a; }
那GetA返回的是右值,&GetA()通不过编译.更别提修改m_a的值了
[解决办法]
显然不合理,GetA()返回的是int常量,取地址是非法操作,建议楼主将返回值改为指针类型。
[解决办法]
class A
{
public:
int& getA(){return m_a;}
int getA() const{ return m_a;};
private:
int m_a;
};