C 多型性實驗定義抽象類 容器內container,其中定義了若干純虛擬函式,實現求表面積,體積輸出功能

2021-03-22 02:26:38 字數 4052 閱讀 9652

1樓:大野瘦子

這樣:#include

using namespace std;

class container //定義抽象類conyainer; //虛擬函式

virtual xx(){}; //虛擬函式virtual void ***() const =0; //純虛擬函式

private:

.......

};class ***x:public container //公用派生類***x

//對虛擬函式再定義

2樓:

c++程式:

#include

using namespace std;

const double pi = 3.14159;

//抽象類:容器類

class container

;//長方體類:繼承容器類

class cuboid : public containercuboid(double length, double width, double height) : length(length), width(width), height(height)

double area()

double volume()

};//球類:繼承容器類

class spherome : public containerspherome(double radius) : radius(radius)

double area()

double volume()

};void main()

{container *c;

c = new cuboid(2, 3, 4);

cout<<"長方體的表面積:"

執行測試:

長方體的表面積:52

長方體的體積:24

球體的表面積:50.2654

球體的體積:33.5103

3樓:節子不哭

給你一個相關的案例參考著寫,順便學習一下相關知識,這個虛基類是一個圖形類,子類繼承 並實現它的計算面積方法,

#ifndef graph_h

#define graph_h

#include

using namespace std;

class graph

;#endif

------------------------------#include "graph.h"

graph::graph()

----------------------------------rectangle::~rectangle(){cout<<"~rectangle()"

4樓:

#include

class container

virtual double area(void) = 0;            //表面積

virtual double volume(void) = 0;          //體積

void print(void)

~cube(void){}

double area(void)

double volume(void)

private:

double side;

};class cylinder : public container      //圓柱體

~cylindervoid){}

double area(void)

double volume(void)

private:

double radius;

double height;

};int main(void)

c++中抽象類的定義

5樓:可以叫我表哥

定義:在物件導向的概念中,我們知道所有的物件都是通過類來描繪的,但是反過來卻不是這樣。並不是所有的類都是用來描繪物件的,如果一個類中沒有包含足夠的資訊來描繪一個具體的物件,這樣的類就是抽象類。

純虛擬函式是在基類中宣告的虛擬函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛擬函式的方法是在函式原型後加「=0」。[cpp] view plaincopyprint?

virtual void funtion1()=0

virtual void funtion1()=0。

6樓:匿名使用者

含有純虛擬函式的類就是抽象類,它是一種特殊的類,為一個了類簇提供統一的介面。

抽象類無法例項化(無法定義一個抽象類的物件),只能通過繼承機制,生成抽象類的非抽象派生類,然後再例項化。

7樓:匿名使用者

含有純虛擬函式的

如class a

c++ 定義一個抽象類cshape,包含純虛擬函式 getarea和純虛擬函式setdata,然後派生出三角形c********類、矩形

8樓:匿名使用者

#include

using namespace std;

class cshape;

class c********:public cshape

void setarea()

bool operator>(const cshape& cbase)

};class crect:public cshape

void setarea()

bool operator>(const cshape& cbase)

};class ccircle:public cshape

void setarea()

bool operator>(const cshape& cbase)

};int main(){

c******** ct;

ct.setarea();

cout<<"c********面積:"< cr && ct > cc)

cout<<"c********面積最大!"< ct && cr > cc)

cout<<"crect面積最大!"< ct && cc > cr)

cout<<"ccircle面積最大!"<

執行結果:

一個關於c++純虛擬函式和抽象類的題

9樓:匿名使用者

a的想法確實是錯了,選a沒問題,但c也錯了a:純虛擬函式在類中可以有具體的實現**,但是有純虛擬函式的類無法有具體的實現而已.純虛擬函式在派生類中必須被重新定義,但純虛擬函式的實現**還是可以被派生類用 baseclass::

thevirtualfn();這種方式呼叫.

b:沒問題,具有純虛擬函式的類確實是抽象類.

c:派生類有權力將從基類繼承來的純虛擬函式再次定義為純虛擬函式,也有權力完全不理它.因此派生類可以再次成為抽象類.

d:沒問題.但實際上d也不夠周全,純虛擬函式的實現並非一定由派生類給出的,基類也可以給出一個實現,只不過外界能呼叫到的一定是派生類的實現而已.

10樓:匿名使用者

的確 答案錯了 該選c 對於a 純虛擬函式要在派生類來實現具體功能,但是一個抽象類可以派生多個類,所以沒有具體的實現,體現了c++多型性

11樓:匿名使用者

選c啊!!!ccccccccccccccccccccccccc

信我。我現在學c++,應該剛學完!信我!選c

定義一個抽象類shape,在其中說明一個純虛擬函式area()作為一個介面,用來計算圓形、三角形、正方形和長方形

12樓:pretty星空

class shape

};class circle

;其他的依次類似定義

純虛擬函式就是在宣告虛擬函式時初始化為0,程式要自己動手思考寫……

13樓:金鄉大學

要求那麼明確了,有什麼不明白?用多型

定義了抽象類,但又需要抽象類的例項怎麼解決

你的後面那個問題沒看懂什麼意思,先回答你前一個。我覺得還是好解決的,在抽象類裡定義個抽象屬性,比如public abstract abs this在子類裡,override,並return 子類的this那麼父類引用this也是一個例項,執行時就引用的是子類的例項。抽象類能否定義物件例項?抽象類是不...

c抽象類內是否要有方法的實現,C 抽象類可以有構造方法嗎,若是有如何實現及呼叫

定義抽象類和抽象方法 abstract 抽象類特點 1 不能初始化的類被叫做抽象類,它們只提供部分實現,但是另一個類可以繼承它並且能建立它們的例項 2 一個抽象類可以包含抽象和非抽象方法,當一個類繼承於抽象類,那麼這個派生類必須實現所有的的基類抽象方法 3 通過宣告派生類也為抽象,我們可以避免所有或...

C中抽象類和介面的區別,java中抽象類和介面的區別?

c 一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自一個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它...