c 關於建構函式的小問題,希望高手不惜賜教,謝謝了

2022-10-26 19:05:11 字數 505 閱讀 7452

1樓:橋半

由於宣告為保護,在外部不可見,所以禁止直接例項化基類的物件如果寫base b1('a');會報錯的

派生類在構造時先執行基類的建構函式,但保護的建構函式在派生類中是可見的,所以可以例項化派生類的物件

如果是私有的建構函式,就禁止以任何方式呼叫了,這種情況通常用於例如對一個不希望進行復制的類,將其拷貝建構函式宣告為私有

2樓:

基類的兩個建構函式都為protected就是說外部不能直接例項化基類物件了啦,也就是說如果在main中使用new base()的話是不能通過編譯的。

而其子類derived由於可以訪問基類的保護成員,所以可以例項化。如果基類建構函式宣告為private的話,不僅外部(比如main函式)不能例項化它,其派生類derived應該也不能被例項化了。

把建構函式宣告的保護或私有,一般是在該類不想被外部例項化的情況下使用的,比如單例模式裡就要防止類被外部例項化。在這些情況下,保護或私有建構函式還是有必要的。

c 中的拷貝建構函式的問題,c 拷貝建構函式的問題

拷貝建構函式多被用來實現類物件的深拷貝。例如 class a 不定義拷貝建構函式時,你如果對兩個物件賦值,就會是淺拷貝,即 簡單的成員變數相等。a a,b a b 則,相當於作了a.p b.p,a,b的p指標指向了同一個地址,但是資料並沒有拷貝一份,這叫做淺拷貝。所以定義拷貝建構函式 a a a 然...

c 拷貝建構函式問題

從c 的角度說,引用就是個物件別名,當外部物件 實參 傳入函式時,為物件取了個別名 形參 沒有做記憶體分配工作,因而也沒做物件複製工作,所以引用呼叫函式效率最高。而實質上引用其實傳入的是地址 注意別和傳遞指標變數混淆 只是在函式體內將該地址按物件來操作,把他看做函式內定義的一個物件。請參考 incl...

關於c用sort函式降序排序的小問題

include void sort iterator start,iterator end void sort iterator start,iterator end,strictweakordering cmp c algorithm 裡的sort函式怎麼用 sort函式用法例如 sort a,a...