C 賦值號能否被繼承

2022-04-26 05:51:11 字數 1016 閱讀 1526

在c++中,普通函式能夠被繼承,但是析構函式和建構函式不能被繼承。這裡有個問題,c++賦值號能否被繼承?

看以下**:

#include  

using namespace std; 

class a{ 

public: 

a() {  

a = 0; 

cout<

a & operator =(a &aa)   { 

cout<

this->a = aa.a; 

return *this; 

int a; 

class b:public a{ 

public: 

b() { 

i=1; 

cout<

public: 

int i; 

int main(void){ 

a a, b; 

a.a = 100; 

b.a = 200; 

a = b; 

cout<

b b1, b2; 

b1.a = 1; 

b1.i = 10; 

b2.a = 2; 

b2.i = 20; 

cout <

b1 = b2; 

cout<

return 0; 

觀察輸出結果:   

可以看到沒有出錯,呼叫的是a類的過載賦值號方法,而且賦值成功。按理說a類只對a的屬性進行賦值號過載,返回a物件,b類的屬性應該沒有值才對。這是為什麼呢?原因是系統自動生成了賦值符號,即使b類沒有對賦值號過載,一樣可以賦值成功。

我們再在類b內對賦值號進行過載,**如下:

b& operator =(b &bb){ 

cout<

this->a = bb.a; 

this->i = bb.i; 

return *this; 

再觀察輸出結果:

此時呼叫的是b類的過載賦值號方法

作者 wentasy

為什麼C 賦值運算子過載函式不能被繼承

標題的問題同樣可以是 為什麼賦值運算子operator 不能使用虛函式。有一篇文章說得比較好,連線在此 為什麼c 賦值運算子過載函式不能被繼承?推測過程如下 class a1 int operator int a class b1 public a1 int main vc error c2679 ...

c 父類的私有成員能否繼承

1.子類可以間接訪問父類私有成員 父類的私有成員函式和私有成員變數一樣,只有該類內部的其他成員函式可以呼叫,對外是封蔽的。子類繼承了父類的共有函式,且父類的公有函式呼叫了其內部的私有函式,此時子類呼叫父類的公有函式便能訪問父類的私有成員函式了。include using namespace std ...

C 賦值操作符不能繼承

在網上搜尋相關資料時,看到有人說,賦值操作符可以被繼承,並且給出了乙個例子。一時間,也沒想出那個例子錯在 例子 如下 include using namespace std class a class b publica void printnum intmain 在上面這個例子中,派生類呼叫了基類...