在C++的类中,若是使用者自行写入构造函数则本身自带的构造函数会消失。
但是,类中本身自带的不仅仅只有默认构造函数,还有默认的拷贝构造函数,拷贝构造也是一种构造函数,可以用来将同类的对象进行赋值,具体案例如图:
#include <iostream>
using namespace std;
class Num{
public:
int _num;
public:
Num(){}
Num(int num): _num(num){}
void show(){
cout << this->_num << endl;
}
};
int main(){
Num num1(100);
Num num2(num1);
num1.show();
num2.show();
return 0;
}
拷贝构造可以理解为将一个类的值拷贝给另外一个类,此时运行代码就会发现num2虽然没有赋初始值,但是因为拷贝构造的使用,其内部的属性值依然为与num1的属性值相同,为100。
由此不难发现,此时默认的拷贝构造应该是这样:
Num(const Num& num){
this->_num = num._num;
}
与无参构造相同,一旦使用者自己写入拷贝构造则默认的拷贝构造就不存在了。通常,在使用的时候会使用const引用的方法,这种方法即可以防止对传入的参数做出修改,又可以大大的提高传参的速度。