以下两者有什么区别吗?有本地变量参考的C++
const int64 x = some_struct.x;
const int64& x = some_struct.x;
一个比另一个更好吗?我最近看到这个引用被用在某处,但不明白为什么有人会这么做。
以下两者有什么区别吗?有本地变量参考的C++
const int64 x = some_struct.x;
const int64& x = some_struct.x;
一个比另一个更好吗?我最近看到这个引用被用在某处,但不明白为什么有人会这么做。
您可以将引用看作原始变量的别名。
some_struct.x = 1;
const int64 x1 = some_struct.x;
const int64& x2 = some_struct.x;
std::cout << x1 << "," << x2 << std::endl; // should be "1,1"
some_struct.x = 2;
std::cout << x1 << "," << x2 << std::endl; // should be "1,2"
第一种情况是从some_struct.x
得到的值的副本,而第二种情况依然与其绑定。所以如果some_struct.x
更改其值,x
将不会受到影响,但&x
将引用更改。
没有better
,因为这取决于使用此代码的意图。
@JamesRoot你为什么要把它标记为重复?我的问题主要在于如果参考对POD有任何意义。我四处搜寻,找不到任何问题。如果您发现某些内容,请将其张贴并标记为重复。 – Undivided
你将不得不问问原始程序员。没有明显的原因。 –
@未经授权这真的很奇怪。我打算将它标记为重复,并决定它不是,所以我只是让它成为。无论如何,我不知道它为什么标记它。 –