隨筆——過載函式+建構函式+解構函式
阿新 • • 發佈:2019-01-04
//複製建構函式 #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.... 解構函式是在類消亡時會預設呼叫的函式,每當這個類消亡, 便呼叫這個類的解構函式。 */