拷贝构造与拷贝赋值运算符几点摘记
来源:互联网 发布:行测做题软件 编辑:程序博客网 时间:2024/06/07 02:49
1.拷贝构造第一个参数必须是引用类型,而且几乎总是一个const 引用,无返回值;拷贝赋值运算符的参数为其所在类 类型的const 引用,返回一个指向其左侧运算对象的引用
2.与默认构造函数不同,即使我们定义其他构造函数,若没有定义拷贝构造与拷贝赋值运算符,则编译器就会为我们合成
3.神奇功效:合成的拷贝构造会逐元素的拷贝一个数组类型的成员,合成的拷贝赋值运算符也能逐个赋值数组的每个成员
4.拷贝构造函数发生在一下以下几种情况:
a.当我们用=号定义变量时
b.将一个对象作为实参传递给一个非引用类型的形参
c.从一个返回类型为非引用类型的函数返回一个对象
d.用花括号列表初始化一个数组中的元素或一个聚合类的成员
5.几个例子,帮助理解
a.拷贝初始化与直接初始化: (ps:直接初始化实际上是要求编译器使用普通的函数匹配来选择与我们提供的参数最匹配的构造函数)
string dot(10, '.'); //直接初始化
string s(dot); //直接初始化 (ps: 虽然是直接初始化 但其实也是调用了拷贝构造函数)
string s2 = s; //拷贝初始化
string null_book = "99999999999" //拷贝初始化
string nine = string(100, '9'); //拷贝初始化
b.拷贝赋值运算符(相对简单一些)
Sales_data a, b;
a = b; //使用Sales_data的拷贝赋值运算符
摘自c++ primer
0 0
- 拷贝构造与拷贝赋值运算符几点摘记
- 拷贝构造函数与赋值运算符
- 拷贝构造函数与赋值运算符
- 拷贝构造函数与赋值运算符
- c++拷贝构造函数与赋值运算
- 拷贝构造与拷贝赋值
- 拷贝构造函数,类的赋值运算符重载,深拷贝与浅拷贝
- c++拷贝构造函数、赋值运算符=重载、深拷贝与浅拷贝
- 拷贝构造函数 与 拷贝赋值函数
- Cpp_拷贝构造与拷贝赋值
- C++之拷贝构造与拷贝赋值
- 重载赋值运算符与拷贝构造函数的区别
- 拷贝构造函数与赋值运算符重载的区别
- 拷贝构造函数与赋值运算符的区别
- 拷贝构造函数与赋值运算符重载的区别
- 重载赋值运算符与拷贝构造函数的区别
- 重载赋值运算符与拷贝构造函数的区别
- 拷贝构造函数与赋值运算符重载的区别
- 20140403 "再战" step_2
- 《近匠》系列沙龙之探寻绝密武器:移动跨平台开发
- 关于Chrome的一些实用开发工具的使用
- xcode4.6 打开工程就崩溃 意外退出
- 2014-04-03第14周周四工作日志:error C2373: 'CreateUserProfile' : redefinition; different type modifiers
- 拷贝构造与拷贝赋值运算符几点摘记
- 安卓ToggleButton开关按钮使用
- 大型网站架构演化
- hdu 1021 Fibonacci Again(水题)
- 常用的排序算法的C++实现
- STemWin如何启用Multiple Buffering功能
- 赏识教育滥用容易惯坏孩子[图]
- 面试-Http的请求方式GET和POST的区别
- C++易错 笔试题