【发布时间】:2013-08-23 15:17:01
【问题描述】:
我有这些代码
#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 const *_ex; 是一个仅指向 Ex const 的指针。为什么上面的一切正常?
2: void setEx(Ex const &ex) 中的 const 只是意味着你不能在函数体中修改 ex 吗?
3:如果我想要上面的原型(假设出于安全原因),如何修复成员指针变量的 setter 函数?
好的。 if Ex const *_ex; 变成 Ex *_ex; 所以,在 setter 函数中,我想要一个原型不修改参数对象,就像上面一样。函数体如何变成?
【问题讨论】:
-
你的问题不是很清楚
-
好的。我更新了我的最后一个问题
标签: c++ function constants declare raw-pointer