第十二週閱讀程序(5):多重繼承

代碼:
#include <iostream>  
using namespace std;  
class A  
{  
protected:  
    int a,b;  
public:  
    A(int aa, int bb):a(aa), b(bb) {}  
    void printA()  
    {  
        cout<<"a: "<<a<<"\tb: "<<b<<endl;  
    }  
};  
class B: public A  
{  
    int c;  
public:  
    B(int aa, int bb, int cc):A(aa,bb),c(cc) {}  
    void printB()  
    {  
        cout<<"a: "<<a<<"\tb: "<<b<<"\tc: "<<c<<endl;  
    }  
};  
int main()  
{  
    A a(1,1);  
    B b(2,3,4);  
    //此處加入下面各小題中的代碼  
    return 0;  
}  


(a):

a=b;  
a.printA();  
b.printA();  
b.printB(); 

運行結果:

 

(b):

b=a;  
a.printA();  
b.printA();  
b.printB(); 

運行結果:

 

(c):

A &r1=a;
A &r2=b;
r1.printA();
r2.printA();


運行結果:

 

(d):

A *p=&a;
p->printA();
p=&b;
p->printA();


運行結果:

 

(e):

在class A中增加成員函數:
<pre class="cpp" name="code">int getA(){return a;}  
在main函數前增加一般函數:
<pre class="cpp" name="code">void f(A x)  {      cout<<"aaaaah, my a: "<<x.getA()<<endl;  }  
main函數中指定部分爲:
f(a);  f(b); 


運行結果:

 

學習心得:
基類與派生類的轉換,只能用子類對象對其基類對象賦值,而不能用基類對象對其子類對象複製,同一基類的不同派生類對象之間也不能賦值。通過指向基類對象的指針,只能訪問派生類中的基類成員,而不能訪問派生類增加的成員。

發佈了262 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章