C 中派生類之間的賦值對基類的影響

2021-08-26 11:24:51 字數 452 閱讀 8149

環境:vs2010

**:

#include using namespace std;

class a

{public:

a() {

a = 0;

cout<

讀者可以先考慮輸出結果。

執行效果截圖:

分析:a *pa1 = &c1; a *pa2 = &c2;*pa1 = *pa2; 這三句話表示類c2賦值給c1,因為c從a繼承,所以c2賦值給c1後a的屬性發生了修改,但它c1本身的內容不會因此發生改變,所以第一句輸出是111(c2的a賦值給c1的a),2(c1的m).第二句列印相信大家都清楚,這裡不贅述。

注:這裡類b是多餘的,不用考慮。(誤導)

總結:當派生類之間之間進行賦值的時候,只會改變基類的內容,因為派生類是從基類繼承的,而本身的不會因此改變,仍保留。

C 中派生類使用基類成員的問題

在c 中,派生類在定義建構函式時,會呼叫基類建構函式首先完成基類部分的構造 class derive public base 若若派生類定義了乙個基類已有的資料成員,則會覆蓋掉基類。在這個構造過程中,之類自身的成員構造可以使用this指標,this name name 也可以直接使用派生類自己已經定...

C 派生類與基類的賦值

class a class b a void main 可以把派生類賦值給基類。我們知道賦值,是呼叫了類的賦值運算子。所以當派生類給基類賦值時,呼叫了基類的複製運算子函式,該函式的引數是基類物件的const 引用,那麼 a b,實際就是用基類引用派生類,然後將派生類中基類部分賦值給對應的基類成員。而...

C 基類和派生類之間的轉換

本文講解內容的前提是派生類繼承基類的方式是公有繼承,關鍵字public 以下程式為講解用例。1 include2 using namespace std 3 4 class a 5 8 void display 9 private 10 int m 11 int n 12 13 14 void a ...