賦值相容規則

2022-09-01 14:12:14 字數 1193 閱讀 2641

注意:派生類是基類物件,反之不成立

在一定條件下,不同型別的資料之間可以進行型別轉換,如可以將整型資料賦給雙精度型變數。在賦值之前,先把整型資料轉換成雙精度型資料,然後再把它賦給雙精度型變數。這種不同型別資料之間的自動轉換和賦值,稱為賦值相容。在基類和派生類物件之間也存有賦值相容關係,基類和派生類物件之間的賦值相容規則是指在需要基類物件的任何地方,都可以使用其子類物件來代替。

例如,下面宣告兩個類:

class base //

宣告基類base

; class derived:public base//

宣告基類base的公有派生類derived

;

根據賦值相容規則,在基類base的物件可以使用的任何地方,都可以用派生類derived的物件來替代,但只能使用從基類繼承來的成員。具體表現在下面幾個方面:

1.派生類物件可以賦值給基類物件,即用派生類物件中從基類繼承來的資料成員,逐個賦值給基類物件的資料成員。例如

base b;        //

定義基類base的物件b

derived d; //

定義基類base的公有派生類derived的物件d

b=d; //

用派生類derived的物件d對基類物件b賦值

這種賦值的效果是物件b中所有資料成員都將具有物件d中對應的資料成員的值。

2.派生類物件可以初始化基類物件的引用

base b;        //

定義基類base的物件b

derived d; //

定義基類base的公有派生類derived的物件d

base &br=d; //

定義基類base的物件的引用br,並用派生類derived的物件d對其初始化

3.派生類物件的位址可以賦值給指向基類物件的指標。例如

derived d;     //

定義基類base的公有派生類derived的物件d

base *bp=&d; //

把派生類物件的位址&d賦給指向基類的指標bp,也就是說

//使指向基類物件的指標bp也可以指向派生類物件d

附加:.如果函式的形參是基類物件或基類物件的引用,在呼叫函式時可以用派生類物件作為實參。

賦值相容規則

宣告 本博文內容僅供交流學習使用,部分 來自網路 關於賦值相容規則相信不少和我一樣的初學者應該是一頭霧水吧,下面我就寫出個人的看法 開始之前我先要說乙個概念 指類 相信應該沒有那個書本上這樣說吧,這個概念在下面的第3點中會用到,下面舉例說明 int p 在這裡p是乙個指標,它指向乙個int型資料的4...

賦值相容規則

賦值相容規則是指在需要基類物件的任何地方都可以使用公有派生類的物件來替代。通過公有繼承,派生類得到了基類中除建構函式 析構函式之外的所有成員,而且所有成員的訪問控制屬性也和基類完全相同。這樣,公有派生類實際就具備了基類的所有功能,凡是基類能解決的問題,公有派生類都可以解決。賦值相容規則中所指的替代包...

賦值相容規則

在一定條件下,不同型別的資料之間可以進行型別轉換,如可以將整型資料賦給雙精度型變數。在賦值之前,先把整型資料轉換成雙精度型資料,然後再把它賦給雙精度型變數。這種不同型別資料之間的自動轉換和賦值,稱為賦值相容。在基類和派生類物件之間也存有賦值相容關係,基類和派生類物件之間的賦值相容規則是指在需要基類物...