C++中的复制构造函数与赋值运算符

复制构造函数和赋值运算符类似,因为它们都用于使用另一个对象初始化一个对象。但是,它们之间有一些基本的区别:

null
复制构造函数 赋值运算符
当从现有对象创建新对象时,将调用它作为现有对象的副本 当一个已经初始化的对象从另一个现有对象中分配了一个新值时,就会调用此运算符。
它会为新对象创建一个单独的内存块。 它不会创建单独的内存块或新的内存空间。
它是一个重载构造函数。 它是位运算符。
C++编译器隐式提供复制构造函数,如果在类中没有定义复制构造函数。 如果赋值运算符没有重载,则会创建按位复制。

语法:

类名(续类名和obj){

//身体

}

语法:

类名obj1,obj2;

obj2=obj1;

考虑下面的C++程序。

CPP

// CPP Program to demonstrate the use of copy constructor
// and assignment operator
#include <iostream>
#include <stdio.h>
using namespace std;
class Test {
public :
Test() {}
Test( const Test& t)
{
cout << "Copy constructor called " << endl;
}
Test& operator=( const Test& t)
{
cout << "Assignment operator called " << endl;
return * this ;
}
};
// Driver code
int main()
{
Test t1, t2;
t2 = t1;
Test t3 = t1;
getchar ();
return 0;
}


输出

Assignment operator called 
Copy constructor called 

说明: 在这里 t2=t1; 呼叫 赋值运算符 ,与 t2。运算符=(t1); 测试t3=t1; 呼叫 复制构造函数 ,与 试验t3(t1);

必须阅读: C++中的复制构造函数是什么时候调用的?

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享