什么时候需要自己定义拷贝构造函数
2014-02-19 17:42
267 查看
网络上搜索了一下:
1、这里有个简单的规则:如果你需要定义一个非空的析构函数,那么,通常情况下你也需要定义一个拷贝构造函数。
2、有一个原则:一般来说你在类中进行了new操作,你就需要析构函数,在你需要析构函数的类中,一般需要加上挎贝构造函数和赋值函数。
3、拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);
通常的原则是:①对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;②在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
1、这里有个简单的规则:如果你需要定义一个非空的析构函数,那么,通常情况下你也需要定义一个拷贝构造函数。
2、有一个原则:一般来说你在类中进行了new操作,你就需要析构函数,在你需要析构函数的类中,一般需要加上挎贝构造函数和赋值函数。
3、拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):
1) 一个对象作为函数参数,以值传递的方式传入函数体;
2) 一个对象作为函数返回值,以值传递的方式从函数返回;
3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);
通常的原则是:①对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;②在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
相关文章推荐
- 使用new分配内存的类需要自己定义拷贝构造函数
- 什么时候需要定义拷贝构造函数
- Chapter9——构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?
- C/C++ 什么时候需要定义拷贝构造函数
- 构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数?
- PostgreSQL 中定义自己需要的数据类型
- 什么时候析构函数需要定义为虚函数
- C++为什么需要定义自己的复制构造函数
- KETTLE“设置变量“、”变量赋值”"和“自己定义JAVA代码”的实例应用(kettle动态excel文件名需要重点参考看1.1.4)
- 支付宝小程序你什么时候需要自己开发?4大维度详细分析支付宝,微信小程序区别
- 什么时候需要拷贝构造函数和赋值构造函数?
- PostgreSQL 中定义自己需要的数据类型
- 什么时候需要将析构函数定义为虚函数,如果不这么做,会存在什么问题?
- 工作需要:Result 是自己定义的类,在DAO里面得到select结果集
- 原理Date对象(即Date())不是本来就有,还需要自己的定义
- 类 的默认拷贝构造是浅拷贝。 若要深拷贝,则需要自己重写拷贝构造函数。
- css初始化代码,根据自己需要定义
- C++为什么需要定义自己的复制构造函数
- 程序片段----std::set中使用自己定义的结构体需要重载小于号 20170904
- 2011037-8.4.1-需要读写文件时,必须定义自己的对象,并将它们绑定在需要的文件上