拷贝构造函数 & 拷贝赋值运算符

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;						// 拷贝赋值运算符 

  

以上是关于拷贝构造函数 & 拷贝赋值运算符的主要内容,如果未能解决你的问题,请参考以下文章

C++ 拷贝构造函数和赋值运算符

拷贝构造函数——重载赋值运算符

[QT入门篇]3 QObject的拷贝构造函数与赋值运算符

拷贝构造函数和赋值运算符的认识

C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读

C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读