析构函数与构造函数的调用
生活随笔
收集整理的這篇文章主要介紹了
析构函数与构造函数的调用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
閱讀程序寫結果:
#include <iostream> using namespace std;class A { public:A();A(int i,int j);~A();void print(); private:int a,b; }; A::A() {a=b=0;cout<<"C"<<a<<"* "; } A::A(int i,int j) {a=i;b=j;cout<<"C"<<a<<"# "; } void A::print() {cout<<"P"<<a<<" "; } A::~A() {cout<<"D"<<a<<" "; } int main() {A*ptr;ptr=new A[3];//對象數組ptr[0]=A(1,2);//調用構造函數,銷毀原有對象ptr[1]=A(3,4);//調用構造函數,銷毀原有對象ptr->print();delete[]ptr;//調用析構函數return 0; }運行結果:
關于為啥ptr[0]=A(1,2);那會先調用構造函數,然后馬上又調用個析構函數?
我的理解是這個亞子的~
ptr=new A[3];
//調用無參構造函數,創建對象數組(含3個A類對象)
【輸出C0C0C0】
ptr[0]=A(1,2);
//調用有參構造函數,實例化一個A類對象,銷毀ptr[0]處原有對象
【輸出C1D1】
ptr[1]=A(3,4);
//調用有參構造函數,實例化一個A類對象,銷毀ptr[1]處原有對象
【輸出C3D3】
ptr->print();
//調用print函數
【輸出P1】
delete[]ptr;
//銷毀對象數組,調用析構函數(析構函數的調用順序與構造函數相反)
【輸出D0D3D1】
總結
以上是生活随笔為你收集整理的析构函数与构造函数的调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阅兵有东北抗日联军吗?
- 下一篇: windows7怎么设置鼠标灵敏度 如何