Const变量声明
Const variable declaration
我有一个函数,返回对对象的常量引用,如下所示:
const &Foo getFoo() {
return foo;
}
如果我有以下另一个功能:
void bar() {
const qwerty = asdf.getFoo();
int x = qwerty.x + 5;
// something here
}
前面带const的qwerty是必要的还是最佳实践?
首先,这既不是必要的,也不是最佳实践——这是不够的。你也需要打字。一旦您填写了它,const
仍然是不必要的,除非您尝试通过非const
引用来获取它。我们有三种选择可以编译:
Foo qwerty = asdf.getFoo(); // (A)
const Foo qwerty = asdf.getFoo(); // (B)
const Foo& qwerty = asdf.getFoo(); // (C)
假设getFoo()
返回对const
的引用,最有效的方法是将其作为对const
的引用,这样可以避免复制。除非,也就是说,您想要一个副本——在这种情况下,需要(A)
或(B)
,这取决于您是否想要一个可修改的副本。除非Foo
是不可复制的,否则在这种情况下,(C)
是您唯一的选择。
最终,这取决于你想用qwerty
做什么。我会默认为(C)
,并且需要一个理由来选择其中一个。
相关文章:
- 在疯狂的部分中声明变量
- 如何在C++中为高分辨率时钟声明变量?
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- CUDA 的性能取决于声明变量
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- C++声明变量时自动类型推断而不初始化
- 在不同循环中多次声明变量的优点
- 奇怪的错误 C2131 与 constexpr 声明变量
- 是否可以在 "if" 语句中声明变量?
- 在python-ctypes中声明变量并传递给dll函数
- 在递归函数C++中声明变量
- 只有一个定义/声明时标头声明变量的多堆定义错误
- 奇怪的未声明变量编译器错误
- 我在C++程序中声明变量时遇到问题
- 在命名空间中声明变量
- C++ lambda 按值捕获,而无需更早声明变量
- 声明变量以保存字符串列表时的内存分配
- 如何声明C 变量应突变
- 为什么允许在开关语句中声明变量?但不是声明 初始化
- 在同一命名空间中声明变量和函数是否出错?[C++]