对于复制构造函数来说很重要
Is Const important for Copy Constructor?
我正在在dev c 上运行此程序,并且显示了const的错误..但是在Visual Studio中,其工作正常。现在const对复制构造函数很重要?
#include<iostream>
using namespace std;
class Test
{
/* Class data members */
public:
Test(Test &t) { /* Copy data members from t*/}
Test() { /* Initialize data members */ }
};
Test fun()
{
cout << "fun() Calledn";
Test t;
return t;
}
int main()
{
Test t1;
Test t2 = fun();
return 0;
}
传统上将复制构造函数称为
Foo(const Foo&);
由于假定副本不会在其右侧更改对象(至少一个好的复印机不应该更改它,对吧?)
)在标准C 中,您无法将临时性绑定到非const
参考。Visual Studio使用非标准扩展名,这就是为什么您的代码编译,但您不应依靠非标准扩展。
并非绝对必须让您的复制构造函数通过const
参考将RHS取用,也可以通过参考将其拿走。但是在这种情况下,您将无法从rvalue执行复制初始化(基本上是临时的)。
相关文章:
- 模板,函数使用错误的构造函数来复制我的对象
- 在引用初始化中使用已删除的复制构造函数进行复制初始化
- C++:右值引用构造函数和复制省略
- 如何编写复制构造函数来复制指针?
- 字符串是否在其构造函数中复制数据
- 复制构造函数和复制赋值运算符是否应具有相同的语句?
- 指定不用作复制构造函数的复制构造函数
- 为什么具有 2 个参数参数的构造函数接受复制对象作为 1 个参数参数?
- 为什么模板构造函数比复制构造函数更受欢迎?
- 在C++中移动构造函数和复制构造函数
- C++ 如何在容器类复制构造函数中复制分配器对象
- C++ 构造函数和复制构造函数
- C - 构造函数,复制构造函数,MOVE构造函数,驱动器
- 复制构造函数和复制分配操作员
- 构造函数在复制矢量中的类时调用
- C 非堆工厂对象创建具有受保护的构造函数和复制构造函数
- 显式关键字,移动构造函数和复制构造函数,并禁用移动和复制构造函数
- 为什么C++编译器会创建复制构造函数和复制赋值运算符
- 在类层次结构中,完美的转发构造函数和复制构造函数之间的冲突
- 在复制构造函数中复制唯一指针数组的内容