C++結構體:預設建構函式,複製建構函式,過載=運算子
阿新 • • 發佈:2019-01-05
C++結構體提供了比C結構體更多的功能,如預設建構函式,複製建構函式,運算子過載,這些功能使得結構體物件能夠方便的傳值。
比如,我定義一個簡單的結構體,然後將其作為vector元素型別,要使用的話,就需要實現上述三個函式,否則就只能用指標了。
#include <iostream> #include <vector> using namespace std; struct ST { int a; int b; ST() //預設建構函式 { a = 0; b = 0; } void set(ST* s1,ST* s2)//賦值函式 { s1->a = s2->a; s1->b = s2->b; } ST& operator=(const ST& s)//過載運算子 { set(this,(ST*)&s) } ST(const ST& s)//複製建構函式 { *this = s; } }; int main() { ST a ; //呼叫預設建構函式 vector<ST> v; v.push_back(a); //呼叫複製建構函式 ST s = v.at(0); //呼叫=函式 cout << s.a <<" " << s.b << endl; cin >> a.a; return 0; }