【发布时间】:2020-04-05 14:12:03
【问题描述】:
为什么我通过引用传递了对象内部的值却没有改变。
class ref_test {
public:
explicit ref_test(const int& a) : a(a) {};
const int& get_a() noexcept { return a;}
private:
const int a;
};
int main(int argc, char* argv[]) {
int b = 10;
ref_test r(b);
b = 15;
std::cout << r.get_a() << std::endl;
std::cout << b << std::endl;
return 0;
}
输出:
10
15
据我了解,我将内存位置传递给不允许更改它的对象(因为它被标记为 const)。如果我在传递后更改值,则内存位置内的值应该改变,因此也应该改变对象内的值。 如果这是真的,那么通过引用传递给对象应该是不安全的,因为之后值可能会被更改。那么,按值传递给对象是不是更好?
【问题讨论】: