c 子類向父類的顯示轉換時為什麼呼叫拷貝建構函式

2025-03-28 20:15:17 字數 928 閱讀 1048

1樓:孤松獨海

因為是轉換為check型別,所以要呼叫check的。

2樓:網友

執腔含行(check)a=b;的時伍卜笑候,相當於check a(b);將a的driver_check型別強制轉換為b的check型別,當然是呼叫基類的弊肢拷貝建構函式了。

3樓:匿名使用者

建構函式相同。

等號不會和任何拷貝(或稱複製,後面就叫複製建構函式,因為貝字超難打)建構函式相同。下面講解原因:

複製初始化與複製建構函式:複製初始化是建立乙個新物件,並且其初值來自於另乙個已存在的物件,複製初始化總是呼叫複製構差橡造函式來初始化的,複製初始化時首先使用指定的建構函式建立乙個臨時對緩鍵象,然後用複製建構函式將臨時物件的每個非static成員依次的複製到新建立的物件。複製建構函式執行的是逐個成員初始化。

注意這裡是用乙個已存在的物件建立另乙個新物件,與用建構函式直接建立乙個新物件不一樣,使用建構函式初始化時不會使用另乙個物件。比如有類hyong,則語句hyong m(1,2)呼叫建構函式直接初始化,而語句hyong n=m則是用已存在的物件m去初始化乙個新物件n,屬於複製初始化。

賦值:賦值是在兩個已存在的物件間進行的,也就是用乙個已存在的物件去改變另乙個已存在物件的值。賦值將呼叫賦值操作符對物件進行操作,比如有類hyong,有語句hyong x(1);hyong y(1,2)則x=y;這就是賦值,因為物件x和y是已經存在的物件,而語句hyong x=y;則是複製初始化,是用乙個已存在的物件y去建立乙個新物件x,所以是複製初始化。

所以你補允所問的後面兩個問題根本沒有任何意義,過載的=和複製建構函式根本就是不相同的,他們在不同的場合使用,如果兩個物件已經存在,就會使用賦值操作符,如果是使用乙個物件去建立(注意是建立)另乙個不存在的物件,則會使用複製建構函式。

另外,站長團上有產品**,便宜***。

c中父類能呼叫子類的方法嗎

其實也不一定啊,父類可以通過例項呼叫子類繼承的父類的相應方法啊。舉例 都是public class father class son father 然後執行這段 fatherf newfather sons new son f.refer s console.writeline f.writesom...

java裡面為什麼子類繼承父類的時候class前面不能加訪問修飾符public或者private

類 class 的修飾符只能是預設,public,abstract final 不能是private 在繼承的時候要看父類是什麼樣的,如果父類是final的,那就不能用public修飾子類了 因為不能繼承該類 類的訪問許可權好像是public abstract,final,defaultl型的,類的...

c怎麼引入類庫為什麼我自己定義的類庫

系統的是框架裡有,能直接用,你自定義的系統能知道嗎?你不新增進來的話,你打using 它去什麼地方找你這個my呢?你引用進去後,再打using 它能在引用下找到,當然才能出來,一般引用下的檔案都在軟體後臺生成dll。因為系統的已經引用過了,在你建立的時候他就根據你建立型別自動引用了一些類庫,我們自己...