【发布时间】:2021-06-21 09:45:03
【问题描述】:
我已经读过按值传递、按引用传递和按常量引用传递(指针)之间的区别,但我不明白后者与仅传递常量指针之间的区别。举个例子,有什么区别
int PI = 3;
int* getArg(int* const& x){
x = Π
return x;
}
int main() {
}
和
int PI = 3;
int* getArg(int* const x){
x = Π
return x;
}
int main() {
}
这两者都导致相同的error: assignment of read-only parameter 'x'。
【问题讨论】:
-
您会收到错误,因为指针
x是常量,您无法修改它。int* const x可以读作“x是一个指向(非常量)int的常量指针”。 -
这是什么教科书,他们为什么要这样对你?在现代 C++ 代码中,您尽可能避免使用有利于引用的指针。使用指针 和 引用你会弄得一团糟,除非你通过引用来操作指针,否则绝对没有必要,在这种情况下
const不适用。 -
在教材的上下文中,如果附有一些解释,它可能是有意义的,但在野外我会认为
int* const& x是一个需要修复的混淆 -
是的,它与
int* const& x相同,它以“x是对...的引用”开头,但其他方面相同。不,两者之间没有真正的区别。仅当您打算更改指针指向的位置时,通过引用传递指针才有意义。 -
哦,极客的极客。你应该停止阅读那个网站。它以糟糕的代码风格、错误的信息和错误而闻名。