拷贝构造函数 & 拷贝赋值运算符
Posted GGBeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拷贝构造函数 & 拷贝赋值运算符相关的知识,希望对你有一定的参考价值。
一、拷贝构造函数
1. 形式
class A { public: // ... A(const A &); // 拷贝构造函数 };
2. 合成拷贝构造函数
- 编译器总会为我们合成一个拷贝构造函数,即使我们定义了其他构造函数。
3. 拷贝构造函数不应该是explicit的
- 拷贝构造函数在必要时可以被隐式地使用。
4. 拷贝初始化
①用=定义对象
string s1 = s;
string s2 = "hello";
string s3 = string(10, ‘c‘);
②传递参数(形参为非引用类型)
③函数返回一个非引用类型的对象
④用花括号初始化一个数组中的元素或一个聚合类中的成员
二、拷贝赋值运算符
1. 形式
class A { public: // ... A& operator=(const A &); // 赋值运算符 };
2. 合成拷贝赋值运算符
- 编译器会为我们生成一个合成拷贝赋值运算符,如果该类未定义自己的拷贝赋值运算符。
3. 与拷贝构造函数的区别
class string { public: // ... string(const string &); string& operator=(const string &); }; string s; string ss = "hello"; // 拷贝构造函数 s = ss; // 拷贝赋值运算符
以上是关于拷贝构造函数 & 拷贝赋值运算符的主要内容,如果未能解决你的问题,请参考以下文章