<C++>14.构造函数的重载与拷贝构造函数
2017-10-05 18:07
239 查看
14.构造函数的重载与拷贝构造函数
一、构造函数的重载
在一个类中可以定义多个构造函数,以便对类的对象提供不同的初始化方法,以适应不同的情况。这成为构造函数的重载注意:
在一个类中,当无参数的构造函数和带默认参数的构造函数重载时,有可能产生歧义。
例:
class A
{
public:
A(){}
A(int i=0){a=i;}
private:
int a;
};
int main(void)
{
A op1(1); // 正确
A op2(); // 错误
return 0;
}
二、拷贝构造函数
1、概述:拷贝构造函数是一种特殊的构造函数,其形参是本类对象的引用。2、作用:在建立一个新对象时,使用一个已经存在的对象去初始化这个新对象。
3、定义形式:构造函数名 (类名
&)
4、拷贝函数的特点
1)拷贝构造函数只有一个参数,参数是同类对象的引用。
2)名字必须与类名相同,且没有返回值。
3)每一个类必须至少有一个拷贝构造函数。若没有定义拷贝构造函数,系统会自动生成一个默认的拷贝构造函数。
5、调用拷贝构造函数的三种情况
1)当用类的一个对象去初始化该类的另一个对象时。
2)当函数的形参是类的对象,调用函数进行形参和实参结合时。
3)当函数的返回值是对象,函数执行完毕返回调用者时。
三、浅拷贝与深拷贝
1、浅拷贝由默认的拷贝构造函数所实现的数据成员逐一赋值。
2、深拷贝
通常用于类中函数指针变量时,显示地定义一个拷贝构造函数,使之不但复制数据成员,而且为对象分配各自的内存空间。
相关文章推荐
- C++输入操作符>> 输出操作符<<重载
- C++实现类String--含构造函数以及重载>>,<<,>,<,==,=
- C++的流插入运算符“<<”和流提取运算符“>>”的重载
- c++ 重载 >>(输入) 、<< (输出) 操作符
- 重学C++ 重载 流插入(<<)和流提取(>>)运算符
- C++走向远洋——55(项目一3、分数类的重载、>><<的重载)
- <<C++ Primer>>中文版 重载箭头运算符的理解
- C++构造函数、拷贝构造函数、赋值运算符重载 调用时机 GCC与VC在对象作为返回值的不同处理
- C++中cout/cin对于空指针、字符指针的处理,及输入>>、 输出<<操作符的重载
- C++基础:虚函数、重载、覆盖、隐藏<转>
- 任何时候都适用的20个C++技巧 <14-20> STL and Generic Programming
- <C/C++基础>重载、覆盖、隐藏
- 第九周C++上机报告(定义Complex类中的<<和>>运算符的重载)
- c++文件输入输出流fstream,对输入>>和输出<<重载
- 14-9-11 C/C++课程设计--图书馆管理系---<time.h>中时间数据类型的学习记录
- c++ 重载 >>(输入) 、<< (输出) 操作符
- C++第九周【任务一】定义Complex类中的<<和>>运算符的重载,实现输入和输出
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- 模板类中操作符重载问题("<<"和">>"重载)[c++]
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出