为什么当我们有常量引用时创建临时对象?

Why temp object created when we have const reference?

本文关键字:创建 临时对象 引用 我们有 常量 为什么      更新时间:2023-10-16

为什么当我们有常量引用时会创建临时对象? 为什么我们在复制构造函数中有常量引用?

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引用传递