C 中,為什麼子類物件可以賦值給父類物件而反過來卻不行

時間 2022-03-08 09:55:04

1樓:匿名使用者

子類繼承於父類,它含有父類的部分,又做了擴充。如果子類物件賦值給父類變數,則使用該變數只能訪問子類的父類部分(因為子類含有父類的部分,所以不會有問題)

但是,如果反過來,這個子類變數如果去訪問它的擴充成員變數,就會訪問不到,因為原變數不包含該部分,會記憶體越界。

2樓:仰宛秋

子類從父類繼承了所有的方法和屬性,那麼父類有的子類都有,所以子類可以給父類的賦值;反過來,如果子類不但繼承了父類的方法和屬性,它還增加了新的屬於自己的方法和屬性,此時你用父類的物件去賦值給子類的物件,這些新的方法和屬性要怎麼操作呢,c++為了避免這樣的現象出現,當你用父類物件給子類賦值時就會報錯。

3樓:匿名使用者

子類物件也存在一個父類的部分。也就是說如果derive類是base類的子類,那麼所有derive類的物件都具有base類的物件所應該有的所有資料,也就可以從derived類的物件「擷取」出一個base類的物件,再賦給另一個類base的物件……但一個base類的物件卻未必具有derived類的物件應有的所有資料……

關於子類物件和父類物件的賦值求疑問。。c#中 父類物件和子類物件可以隨意互相賦值???

4樓:匿名使用者

樓主你好du~

父類和子類

zhi是不能隨意互相賦值的。

父類例項dao = 子類例項; // 可以編譯通過最簡單的用例專就是一個屬 object 可以被賦值儲存各種例項變數。

而子類例項 = 父類例項; // 編譯出錯正確的寫法是:

子類例項 = (子類型別)父類例項;

或者子類例項 = 父類例項 as 子類型別;

這種情況編譯通過,但是如果使用強制轉換以後出現了錯誤的賦值,那麼執行時報錯。

最常見的用例就是各種事件的第一個引數object sender,一般處理就是獲取觸發物件就是:

button bt = sender as button;

這就是提取了觸發這個事件的按鈕。

請追問~

5樓:匿名使用者

可以互相賦bai值。但有所du不同。

父類物件賦

zhi值給子類,對dao象屬效能保持完專整,原有屬性不屬會丟失。

子類物件賦值給父類物件,可能會發生屬性丟失,因為子類物件除了具有父類的屬性,還具有自身屬性,賦值給父類時,子類特有屬性會丟失。

c++中一個常數為何可以賦值給物件?這是什麼意思啊?

6樓:匿名使用者

只要類過載了對應資料型別的賦值操作符「=」,就可以進行相應的賦值操作。

引用也可以用另一個引用作初始化,引用的結果是引用相同的物件。

C中在子類中訪問父類成員的關鍵字是什麼

最紳士的痞子灬 使用base.呼叫父類裡面的屬性 public class parent public class child parent 1 父類不能直接強制轉換成子類 2 子類可以強制轉換成父類,但是在父類中只能取父類的欄位與方法因此在一個父類對應多個子類的時候,不知道具體是哪個子類的時候,就...

為什麼在C 中vector string物件不能直接輸出,需要自己遍歷,然後逐個輸出

一個原因是標準庫不知道怎樣才是最合適的輸出方式,比如每個元素間要不要用回車分隔,還是用逗號分隔,再說即使不能直接輸出,寫起來也很簡單,如果是c 11的話,寫成 for auto i text cout i 就可以了 真的需要cout text 這種寫法的話,自己過載一個 operator 函式也是很...

C 中的「類」是什麼意思,c 中的類和類的物件是什麼意思

光棍誓言 類就是就是有類似屬性的集合。舉個例子。就像是學生類是吧。這個類就可以定義許多有一定屬性的學生。就像身高,體重什麼的。因為這都是學生的屬性。不過0基礎的話,還是先學c,學會結構體。接著學c 過渡到類。真的,零基礎直接殺c 是吃力的。 令狐蛋蛋 相當於一個集合,型別。這個集體有共同的特徵,比如...