1. 程式人生 > >隨筆——過載函式+建構函式+解構函式

隨筆——過載函式+建構函式+解構函式

//複製建構函式
#include<iostream>
using namespace std;
class node
{
private:
    int x,y;
public:
    init()
    {
        int a, b;
        cin>>a>>b;
        x=a,y=b;
    }
    out()
    {
        cout<<x<<" "<<y<<endl;
    }
};
int main()
{
    node p1;
    p1.init();
    cout<<"p1 parameter:"<<endl;
    p1.out();
    node p2(p1);//預設複製建構函式的呼叫
    cout<<"p2 parameter:"<<endl;
    p1.out();
}
/*
複製建構函式也是建構函式的一種,也稱拷貝函式,只用一個引數,引數時本類的
引用。如果沒有定義複製建構函式,編譯器就會自動生成複製建構函式。
*/

#include<iostream>
using namespace std;
class node
{
public:
    int x,y;
    node(){};
    node(node& a)//複製建構函式
    {
        cout<<"*******"<<endl;
        x=1,y=2;
    }
};
void F(node a)
{
    cout<<a.x<<" "<<a.y;
}
int main()
{
    node b;
    b.x=4,b.y=5;
    F(b);//把實參(b)穿給形參(a)
}
/*
函式的形參是用複製建構函式初始化的,把實參傳給形參時,複製建構函式
會被呼叫.
*/
//解構函式
#include<iostream>
using namespace std;
class node
{
public:
    ~node()//解構函式
    {
        cout<<"die...."<<endl;
    };
};
void F()
{
    node a;
    return ;//函式呼叫結束後類a消亡。
}
int main()
{
    node *p;
    p=new node;
    delete p;//刪除類,類消亡。
    cout<<"------------"<<endl;
    F();
}
/*
輸出結果:
die....
------------
die....

   解構函式是在類消亡時會預設呼叫的函式,每當這個類消亡,
便呼叫這個類的解構函式。
*/