c定義虛基類Shape,在Shape類的基礎上

2021-03-03 22:15:11 字數 1816 閱讀 3517

1樓:匿名使用者

#include

using namespace std;

class shape

;void shape::createshape()class rectangle:virtual public shape

;rectangle::rectangle (float a,float b)

float rectangle::getarea()class circle:virtual public shape;circle::

circle(float r)float circle::getarea()int main()

c++問題問題,/*寫一個程式,定義抽象基類shape,由他派生出3個派生類:circle(圓形),rectangle(矩形 5

2樓:德克and德華

//錯誤略多。。看我的註釋

#include

using namespace std;

class shape

//面積還是返回浮點數比較合適

virtual void shapename() = 0;

};class circle:public shapecircle(int a,int b,int c)void shapename()

};class rectangle:public shaperectangle(int a,int b)void shapename()

};class ********:public shape********(int a,int b)void shapename()//為使其返回正確的浮點數,在運算時加一個1.0*

};void printarea(circle c,rectangle r,******** t)//這個函式僅僅是列印資訊,沒必要宣告一個類來將它包含進去,然後又再多繼承...只需要把它寫成一個普通的全域性函式即可

void main()

3樓:匿名使用者

當c==d時,執行default,然後沒有break,於是執行case『c』

4樓:匿名使用者

1.段錯誤一般是當你訪問了未申請的記憶體

或非法的記憶體時產生的。主要還是程式的記憶體管理有問題。2.

其實開啟檔案是將檔案指標讀到一個記憶體中,來進行操作。lz的這種情況,檔案路徑有問題,就會使程式中記憶體的讀入產生問題,產生斷錯誤。3.

建議lz上網搜尋關鍵字「c++記憶體管理」,再進一步深入這個問題。

5樓:匿名使用者

void printarea(shape & sh){cout << sh.area()<個就是考慮多型。

circle c(1,1,1);

rectangle r(1,1);

******** t(1,1);

printarea(c);

printarea(r);

printarea(t);

虛基類不能建立物件, 需積累指標可以?

6樓:

shape* gshape只是說宣告瞭一個shape性質的指標gshape,就像int *p宣告一個int性質的指標一樣,有什內麼不容可以?但gshape和p現在還都沒有什麼用處,因為它們還沒有指向!題中的**是宣告瞭一個虛基類指標,然後讓這個指標指向虛基類的派生類的物件(由new lineshape生成),是很自然的!

7樓:匿名使用者

樓主你好,這是c++程式的多型性,可以由父類指標來new子類,以此來呼叫子類的過載方法。

C 虛基類問題

首先.這個不叫虛基類 這只是一個普通繼承 基類裡面有一個虛擬函式 定義a p new c p是一個a型別的指標,但實際上p指向的是一個c型別 c型別也是a型別的一種,c繼承自a p show 的時候,因為a中的是 virtual show 即虛擬函式 所以會執行c的show 函式 這就是虛擬函式的一...

如何編寫程式,實現由定義抽象基類Shape(形狀)派生出

不曉得你顯示所有圖形的總面積的函式放在 const double pi 3.14 class shape class circle public shapedouble showarea class rectangle public shapedouble showarea class square...

C 中在基類裡宣告為const的純虛擬函式在派生類裡的同名函

必須,函式是否為const也是過載條件之一比如在一個類裡,存在重名函式 void print void print const 那麼是合法的過載 但是如果是 int print const int print 則不是合法過載 因此想要實體化circle類,必須實現一個形如double print c...