Re: C++ overriding/overriding的問題
※ 引述《sorryChen (陳揚和)》之銘言:
: (OOP沒學好 見諒)
: 問題是:
: 定義了Class A..其中成員有一structure X
: Class B 繼承 A 但想把裡面的structure改掉改成另一種struct Y
: 那應該在Class B overload (用同名但型態不同的宣告.)
: 原來的雖然會被蓋掉 但是contruct的時 是否還有X占空間?
: 還是要用通用的指針..然後繼承的class裡面在new..
: 話說剛才發現另一個問題是
: 對一個function 同時overrideing 和 overloading編譯會有錯
: Class A 中定義method m(int i)
: Class B繼承A overload method m(int i)
: 又新定義 同名 m(char* c), 而且其中中還call m(int i) (等於用同名function包一層)
: 結果編譯時有錯誤 說找不到定義或重複定義..
問題一,
X還是會佔空間
實驗:
class A
{
int x;
};
class B
{
char x;
};
printf("%d %d\n",sizeof(A),sizeof(B))
結果是4 1
改成
class A
{
int x;
};
class B:public A
{
char x;
};
結果是4 8
為何是八之前有人問過,不過我不懂
DevC++的結果
問題二
因為你在B類別定義了m(char *)
他overriding了m(int )
所以類別B沒m(int )
你要呼叫類別A的m(int )須用
A::m(5);
有錯請指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.116.135.217
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章