1樓:匿名使用者
特別提醒幾點:
1.在構造物件(定義物件)時要呼叫建構函式,呼叫哪個建構函式根據物件是否賦初始值而定,「要對應的」.
2.物件的生命期結束時要呼叫析構函式,析構的順序和構造的順序相反!!!!
結果是:
starting1......
default constructor called.
default constructor called.
default constructor called.
ending1......
starting2......
constructor:a=1,b=2
constructor:a=3,b=4
constructor:a=5,b=6
ending2......
destructor called.a=5,b=6
destructor called.a=3,b=4
destructor called.a=1,b=2
destructor called.a=5,b=6
destructor called.a=3,b=4
destructor called.a=1,b=2
和main函式對應的分析如下:
int main()
; cout<<「ending2……」< return 0; } .執行cout<<「starting1……」< starting1...... .執行a a[3]; //這裡呼叫不帶引數的建構函式a::a() default constructor called. 構造a[0],呼叫建構函式a::a() default constructor called. 構造a[1],呼叫建構函式a::a() default constructor called. 構造a[2],呼叫建構函式a::a() .執行for迴圈改變物件a[0]、a[1]、a[2]的成員值a、b,不輸出什麼 .執行cout<<「ending1……」< ending1...... .執行cout<<「string2……」< starting2...... .執行a b[3]=; //這裡呼叫帶引數的建構函式a::a(int i,int j) constructor:a=1,b=2 構造b[0],呼叫建構函式a::a(int i,int j) constructor:a=3,b=4 構造b[0],呼叫建構函式a::a(int i,int j) constructor:a=5,b=6 構造b[0],呼叫建構函式a::a(int i,int j) .執行cout<<「ending2……」< ending2......執行自己寫的cout .在函式結束(return 0;)之前,物件的生命期結束,呼叫析構函式 注意:析構順序和構造順序相反!!!!! destructor called.a=5,b=6 析構b[2],呼叫a::~a() destructor called.a=3,b=4 析構b[1],呼叫a::~a() destructor called.a=1,b=2 析構b[0],呼叫a::~a() destructor called.a=5,b=6 析構a[2],呼叫a::~a() destructor called.a=3,b=4 析構a[1],呼叫a::~a() destructor called.a=1,b=2 析構a[0],呼叫a::~a() .程式結束。 2樓:匿名使用者 #include using namespace std; class a //成員函式,用接受的2個引數賦給兩個成員變數private: int a,b; }; a::a() a::a(int i,int j) a::~a() int main() ; //建立另乙個類陣列 //拿第乙個a(1,2)來說明,因為有1,2兩個引數,所以呼叫另乙個有形參的建構函式進行初始化 //初始化完畢後複製到b[0],後面兩個類是同樣的草錯cout<<"ending2……"< //在這裡,上述執行完畢後,呼叫析構函式,它的呼叫是按照先進後出的原則 //即最後乙個定義的類,最先執行它的析構函式,那麼,執行每個類的析構函式的順序是: //b[2],b[1],b[0],a[2],a[1],a[0]return 0; }輸出結果: starting1...... default constructor called. default constructor called. default constructor called. ending1...... starting2...... constructor:a=1,b=2 constructor:a=3,b=4 constructor:a=5,b=6 ending2...... destructor called.a=5,b=6destructor called.a=3,b=4destructor called. a=1,b=2destructor called.a=5,b=6destructor called.a=3,b=4destructor called. a=1,b=2 3樓: 很明顯是建構函式與析構函式的呼叫問題啦,這麼簡單,還是自己動手吧! if s i ch 這裡的ch 是函式的引數2,函式 void fun char s,char ch 呼叫函式的作用 是 刪除 字串 char s 裡 所有 的字元 ch.char str eatefeed 呼叫 fun str,e 就是刪除 字串 eatefeed 裡 所有 的字元 e.結果得 a... 資料很大,需要用 64 位的 整型盛放 include ifdef win32 typedef unsigned int64 uint64 t else typedef unsigned long long uint64 t endif int main printf lu n sum return... 微俊 include include int main include include include 有一篇文章,共有三行字元,每行80個字元,分別統計其中英文大寫字母,小寫字母,數字,空格以及其他字元的個數 void calc char ch 3 80 int col printf upper ... template int find t val,t list,int size return 1 第二題題目要求太模糊,先不做了 問c 一基礎程式設計題 編一c 程式,生成如下等差數列的前10項 首項 a0 1 公差 an 試題答案 已知數列 都是公差為1的等差數列其首項分別為a1 b1,且a1 b... 把頭檔案改下,再把輸入輸出改下就可以了,不好意思我用手機給你會答的改起來很麻煩。cin改成csanf,cout改成printf,具體怎樣你按相關寫法改就行了。c語言程式設計問題 5 提問怎麼改。把replace函式提到main函式外面。提到main函式的前面。或者在main前面寫乙個replace函...c語言,分析程式執行結果,C語言 分析下列程式的執行結果
c語言程式設計(小程式),C語言程式設計(乙個小程式)
c語言程式設計題,小白不會程式設計序,C語言程式設計題,小白不會程式設計序
c 程式題目,C 程式設計題目,求解
C程式問題,c語言程式設計問題