为什么我要在构造函数中使用对const的引用
Why would I want to use reference to const in Constructor?
一个有点傻的问题,但是为什么?
为什么我要使用const string的引用,而不是仅仅在构造函数中声明一个局部字符串?
class Person (const string &first_name, const string &last_name);
class Person (string first_name, string last_name);
我是否以这种方式获得对自动变量的引用?o_O
谢谢!
因为"幕后"发生的事情的语义是完全不同的。
class Person1 {
std::string f_name, l_name;
public:
Person(std::string first_name, std::string last_name) :
f_name(first_name), l_name(last_name) {
}
};
class Person2 {
std::string f_name, l_name;
public:
Person(const std::string & first_name, const std::string & last_name) :
f_name(first_name), l_name(last_name) {
}
};
当构造Person1
的实例时,用于初始化它的名称被复制两次:第一次用于初始化构造函数中的局部变量,第二次用于复制构造到成员变量。然而,对于Person2
,只发生一次复制:当对成员变量进行复制构造时。
对于这样一个简单的示例,可能不清楚这是否代表重要的性能和内存含义,但对于更复杂的程序,这可能非常重要。
相关文章:
- 将const引用参数初始化为默认参数会导致悬空引用吗
- 为什么当我为 for(auto& it : myUnorderedMap) {... = std::move(it.second)} 时,我会得到一个 const 引用?
- 将对象传递给函数而不将其包装到 std::ref 中,而参数被指定为 const 引用
- 如何在构造函数中传递 const 引用时强制编译器不接受右值
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 对临时对象的Const引用不会延长其生存期
- 对 const 引用参数使用默认值会导致崩溃
- 在运算符重载中使用带有 const 引用的 friend 函数
- C++通过 const 引用传递时不调用派生类函数
- 具有字符串文本构造函数的类不适用于 const 引用初始化
- 为什么要返回对小类成员的 const 引用?
- C - 最好将枚举类作为值或const引用
- RVO:返回由值传递的值,即使显式分配给 const 引用也是如此
- const引用与可变成员的对象
- 每当传递lvalue时,每当通过rvalue传递时,将const引用存储
- 对类成员而不是 getter 的 Const 引用
- 从类型 'Matrix&' 的右值初始化 类型的非 const 引用无效 'Matrix'
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- STD ::配对的const引用如何工作
- 为什么我的C 函数拒绝返回const引用