我有这些代码
#include <iostream>
using namespace std;
class Ex;
class Exx;
class Ex {
public:
int _val;
int const *_p_val;
void setPtrVal(int * const &val) {
_p_val=val;
}
};
class Exx {
public:
Ex const *_ex;
void setEx(Ex const &ex)
{
_ex=&ex;
}
};
int main()
{
Ex x;
int i=10;
x.setPtrVal(&i);
Exx xx;
xx.setEx(x);
int y=20;
cout<<*(xx._ex->_p_val)<<endl;
x.setPtrVal(&y);
cout<<*(xx._ex->_p_val)<<endl;
cout<<*x._p_val<<endl;
return 0;
}
1:可以看到,Ex x不是Ex class的 const 。和Ex 常量 *_ex; 是仅指向Ex const的指针。为什么上面的一切都好?
2:void setEx(Ex const &ex)中的 const只是意味着你不能在函数体中修改 ex 吗?
3:如果我想要上面的原型(假设出于安全原因),如何修复成员指针变量的setter函数?
好的。如果 Ex 常量 *_ex; 成为 Ex *_ex; 所以,在 setter 函数中,我想要一个原型不修改参数对象,就像上面一样。功能体如何变成?