台灣最大程式設計社群網站
線上人數
804
 
會員總數:245016
討論主題:188959
歡迎您免費加入會員
討論區列表 >> C/C++ >> 關於子類別使用父類別的函式
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
關於子類別使用父類別的函式
價值 : 60 QP  點閱數:429 回應數:1

樓主

CYL
門外漢
0 19
288 19
發送站內信


class A{
public:
A(int a){
this->a = a;
}
int a = 0;

virtual void out(){
cout << this->a << endl;
}
};

class B : public A{
public:
B(int b) : A(b){

}
virtual void out() override{
cout << A::a + 10 << endl;
}
};

int main(){
B b(10);
b.out();
((A&)b).out();

return 0;
}


程式碼如上,輸出是20

((A&)b).out();這一行希望讓他使用class A的out方法但是實際上還是使用class B override過的,我也能理解本來應該就會這樣

只是我是想問說是否有一種方式能夠在只有class B的情況下使用其父類別A的方法

之前我的方式都是採用增加一個A,並把資料從B複製到A去,在讓A輸出


B b(10);
b.out();

A a(b.a);
a.out();


但是這樣程式又得多使用了A的空間

搜尋相關Tags的文章: [ 多型 ] , [ c++ ] , [ virtual ] ,
本篇文章發表於2017-04-28 17:22
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

CYL
檢舉此回應
我想我找到方法了

((A)b).out();


但是
((A)b).out(); 與 ((A&)b).out(); 的主要差別在哪?
本篇文章回覆於2017-04-28 18:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.