1. 程式人生 > >C++結構體:預設建構函式,複製建構函式,過載=運算子

C++結構體:預設建構函式,複製建構函式,過載=運算子

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;
}