拷貝建構函式(copy constructor)
阿新 • • 發佈:2019-01-23
拷貝建構函式是指將已存在的該類的一個物件通過引用作為建構函式的引數進行傳遞,從而達到建構函式的目的。一般地存在拷貝建構函式的同時也會有其他的建構函式存在,例如:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct Complex{
double re;
double im;
Complex(double re = 0, double im = 0){ //此處的re=0,im=0是指當建構函式時無引數傳遞下來的時候re和im值預設為0
this->re = re;
this->im = im;
cout << "建構函式Complex(double, double)\n";
}
Complex(const Complex& z){ //拷貝建構函式
re = z.re;
im = z.im;
cout << "呼叫拷貝建構函式Complex(const Complex&)\n";
}
string text(){
stringstream ss;
ss << re << " + " <<im << "j" <<endl;
return ss.str();
}
};
int main(){
Complex a(1.0, 2.0); //通過建構函式產生類的物件z1
cout << "a = " << a.text();
Complex b{3.0, 4.0}; //建構函式的另一種寫法
cout << "b = " << b.text();
Complex c = {5.0 , 6.0}; //建構函式的另一種寫法
cout << "c = " << c.text();
Complex d(a); //通過拷貝建構函式產生類的物件z2
cout << "d = " << d.text();
Complex e{b}; //拷貝建構函式的另一種寫法
cout << "e = " << e.text();
Complex f = c; //拷貝建構函式的另一種寫法
cout << "f = " << f.text();
}
輸出結果:
如有錯誤,歡迎大家批評與指正!