C 程式設計分析下列程式的輸出結果

時間 2022-11-28 18:35:16

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樓:

很明顯是建構函式與析構函式的呼叫問題啦,這麼簡單,還是自己動手吧!

c語言,分析程式執行結果,C語言 分析下列程式的執行結果

if s i ch 這裡的ch 是函式的引數2,函式 void fun char s,char ch 呼叫函式的作用 是 刪除 字串 char s 裡 所有 的字元 ch.char str eatefeed 呼叫 fun str,e 就是刪除 字串 eatefeed 裡 所有 的字元 e.結果得 a...

c語言程式設計(小程式),C語言程式設計(乙個小程式)

資料很大,需要用 64 位的 整型盛放 include ifdef win32 typedef unsigned int64 uint64 t else typedef unsigned long long uint64 t endif int main printf lu n sum return...

c語言程式設計題,小白不會程式設計序,C語言程式設計題,小白不會程式設計序

微俊 include include int main include include include 有一篇文章,共有三行字元,每行80個字元,分別統計其中英文大寫字母,小寫字母,數字,空格以及其他字元的個數 void calc char ch 3 80 int col printf upper ...

c 程式題目,C 程式設計題目,求解

template int find t val,t list,int size return 1 第二題題目要求太模糊,先不做了 問c 一基礎程式設計題 編一c 程式,生成如下等差數列的前10項 首項 a0 1 公差 an 試題答案 已知數列 都是公差為1的等差數列其首項分別為a1 b1,且a1 b...

C程式問題,c語言程式設計問題

把頭檔案改下,再把輸入輸出改下就可以了,不好意思我用手機給你會答的改起來很麻煩。cin改成csanf,cout改成printf,具體怎樣你按相關寫法改就行了。c語言程式設計問題 5 提問怎麼改。把replace函式提到main函式外面。提到main函式的前面。或者在main前面寫乙個replace函...