在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 在上面這個例子中,派生類呼叫了基類...