为什么当我们有常量引用时创建临时对象?
Why temp object created when we have const reference?
为什么当我们有常量引用时会创建临时对象? 为什么我们在复制构造函数中有常量引用?
String::String(const String& old_str)
{
size = old_str.size;
s = new char[size+1];
strcpy(s, old_str.s);
}
复制构造函数中的 Const 引用需要使用 const 限定符声明,因为当您从另一个对象复制对象时,修改原始对象没有任何逻辑意义。Const 保证您不会意外更改旧字符串old_str的内容。
如果在复制构造函数外部创建新对象,则这是预期的行为。我们正在从原始对象创建一个新对象,该对象通过old_str引用传递
相关文章:
- 为什么当我们有常量引用时创建临时对象?
- 为什么在按值返回时创建临时对象,而不是在按值传递给函数参数时创建临时对象
- 我试图创建临时对象的方式有错误吗
- 将项添加到矢量而不创建临时对象
- 在此初始化中创建的临时对象数
- 在没有返回值优化的情况下将两个对象加在一起时,将创建多少个临时对象
- C++:如何创建一个临时对象,包含一个指针 - 常量或非常量,具体取决于上下文
- 按值函数创建范围的临时对象
- 从函数返回引用是否会导致在使用'auto'时创建新的临时对象?
- C++17:是编译器为(静态存储持续时间)const引用绑定创建的可修改的临时对象(和存储)
- 是否在对象中创建临时接口
- Visual Studio 在类型转换时不会创建临时对象
- 通过引用捕获异常时未创建临时对象
- 返回临时对象是否会在C++中创建临时对象
- 在引用初始化期间如何创建临时对象
- 创建c++临时对象
- 我可以直接调用operator()而不创建临时对象吗?
- 在复制构造函数中创建临时对象
- c++优先级队列推送/模板,而不创建临时对象
- 构造函数 c++ Object obj = Object( "string" , 22);正在创建临时对象?