求C 高手解疑

2022-03-08 21:58:43 字數 1147 閱讀 3983

1樓:匿名使用者

呼叫複製建構函式的情形:

1、按傳值方式傳遞物件

2、當物件按傳值方式從函式返回

3、當物件在宣告過程中初始化時。

朋友,你可以發現,b x的時候,先呼叫了a的建構函式,而後呼叫了b的建構函式。但是你下面:

a y = x;

物件a是在宣告的過程中初始化了,故而不呼叫建構函式。它呼叫了系統自動給你生成的乙個預設的複製建構函式,所以什麼都沒有做。如果你為類a寫乙個複製建構函式,如下:(我稍稍改寫了一下)

#include

using namespace std;

static int num=0;

class a

void myfunc()

那麼會呼叫你寫的那個複製建構函式。

輸出結果如下:

a num++:1

b num++:2

heihei!

a 拷貝建構函式 num++:3

heihei!

a num--:2

b num--:1

a num--:0

可以看到,生成b物件時,先呼叫a的建構函式,再呼叫b的建構函式,結束的時候順序相反。但是,生成a物件的時候,由於你用的a y = x; 此時需要呼叫a的拷貝建構函式,所以,不會呼叫a的建構函式了。於是,你會看到上面的輸出結果。

希望能對你有所幫助!

2樓:匿名使用者

b x;這裡會先呼叫基類的建構函式,再呼叫b本身的建構函式

a y=x;這裡僅僅是位賦值,並沒有呼叫建構函式

函式結束時,y,x銷毀時,先呼叫y的析構函式,再呼叫x中b類的析構函式,再呼叫基類的析構函式

3樓:匿名使用者

你直接執行下不就知道了嘛 首先b x;會執行a的構造 然後b的構造;

a y=x;是直接賦值不是執行a的建構函式;

然後呼叫方法輸出heihei;

最後 析構b 執行 a的析構函式 然後b的析構函式;

析構 a 執行 a的析構函式;;

4樓:匿名使用者

單純你指的這一句一次都沒調,只是將位址賦了一下值而已。第一句先呼叫a的構造再呼叫b的構造,最後一句先呼叫a再呼叫b再呼叫a,自己除錯以下

求高手解疑在某c演算法中看到有符號請問下這兩個符號

交換的意思!最後,你懂得了 給不給就看你了 c語言演算法裡很像趨向於的那個符號是什麼意思 就是這個 這個不是c語言的符號 跟c語言沒任何關係 只是寫書人的一種習慣 我以前用的書也是這個樣子還讓我納悶了好一陣 比如1 p 其實意思就是把1這個值賦給p 可以理解成p 1後面的自己推吧 c 中 和 兩個符...

求C 高手指教,求答案,求c語言或者c 高手指教!一段計算bmp圖片畫素大小的小程式,誰能幫忙解釋一下它的計算原理呢?

第五題是不是該有個圖?好吧是我傻了,樓下回答得好。6.條件,迴圈體 我不太確定名詞對不對 7.do,for,while for while可換順序 8.break 9.continue 10.return 關於用c 語言求兩個順序表並集的問題,求高手指教 for int i 0 i 5 i 問題 f...

C語言問題,求高手幫忙,C語言問題,求高手幫忙!!

1.輸入輸出問題,在輸入整數或浮點數後面直接輸入字元或字串,要清除一下回車號,或都在輸入整數後直接清空快取,再讀取內容 2.越界問題,修正問題1後,如果記憶體裡沒有連繼的 0 字元,你這程式會嚴重越界 語句 k j 1 前加一句 if c j 0 break 到尾就不要再迴圈了,防止越界 改完後的效...