use*_*792 5 c++ reference pass-by-reference
我发现下面的行为真的很奇怪,这只是我代码中一个奇怪错误的原因。将带有引用的对象作为常量引用传递,然后使用这些引用来更改它们引用的对象是否被认为是不好的?我知道引用没有改变,但我会假设将对象作为 const ref 传递会使它的所有成员也成为 const 吗?
struct wrapr{
int& a;
};
void mod(const wrapr& aaa){
aaa.a = 1;
}
int main() {
int b = 2;
wrapr a {b};
mod(a);
std::cout << b; // prints 1
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
奇怪的是,如果我要声明结构
struct wrapr{
const int& a;
};
Run Code Online (Sandbox Code Playgroud)
那么代码将无法编译。我猜当你通过 const 引用传递一个对象时,我有什么心理模型,它与在它的所有成员变量上加上“const”前缀相同。显然情况并非如此。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |