十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
你說的是c++的抽象類
成都創(chuàng)新互聯(lián)公司長期為超過千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為淮濱企業(yè)提供專業(yè)的成都網(wǎng)站建設、做網(wǎng)站,淮濱網(wǎng)站改版等技術(shù)服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
純虛函數(shù)和抽象類
純虛函數(shù)是一種特殊的虛函數(shù),它的一般格式如下:
class 類名
{
virtual 類型函數(shù)名(參數(shù)表)=0;
…
};
在許多情況下,在基類中不能對虛函數(shù)給出有意義有實現(xiàn),而把它說明為純虛函數(shù),它的實現(xiàn)留給該基類的派生類去做。這就是純虛函數(shù)的作用。下面給出一個純虛函數(shù)的例子。
#include
class point
{
public:
point(int i=0, int j=0) { x0=i; y0=j; }
virtual void set() = 0;
virtual void draw() = 0;
protected:
int x0, y0;
};
class line : public point
{
public:
line(int i=0, int j=0, int m=0, int n=0):point(i, j)
{
x1=m; y1=n;
}
void set() { cout"line::set() called.\n"; }
void draw() { cout"line::draw() called.\n"; }
protected:
int x1, y1;
};
class ellipse : public point
{
public:
ellipse(int i=0, int j=0, int p=0, int q=0):point(i, j)
{
x2=p; y2=q;
}
void set() { cout"ellipse::set() called.\n"; }
void draw() { cout"ellipse::draw() called.\n"; }
protected:
int x2, y2;
};
void drawobj(point *p)
{
p-draw();
}
void setobj(point *p)
{
p-set();
}
void main()
{
line *lineobj = new line;
ellipse *elliobj = new ellipse;
drawobj(lineobj);
drawobj(elliobj);
cout setobj(lineobj);
setobj(elliobj);
cout"\nRedraw the object...\n";
drawobj(lineobj);
drawobj(elliobj);
}
抽象類
帶有純虛函數(shù)的類稱為抽象類。抽象類是一種特殊的類,它是為了抽象和設計的目的而建立的,它處于繼承層次結(jié)構(gòu)的較上層。抽象類是不能定義對象的,在實際中為了強調(diào)一個類是抽象類,可將該類的構(gòu)造函數(shù)說明為保護的訪問控制權(quán)限。
抽象類的主要作用是將有關(guān)的組織在一個繼承層次結(jié)構(gòu)中,由它來為它們提供一個公共的根,相關(guān)的子類是從這個根派生出來的。
抽象類刻畫了一組子類的操作接口的通用語義,這些語義也傳給子類。一般而言,抽象類只描述這組子類共同的操作接口,而完整的實現(xiàn)留給子類。
抽象類只能作為基類來使用,其純虛函數(shù)的實現(xiàn)由派生類給出。如果派生類沒有重新定義純虛函數(shù),而派生類只是繼承基類的純虛函數(shù),則這個派生類仍然還是一個抽象類。如果派生類中給出了基類純虛函數(shù)的實現(xiàn),則該派生類就不再是抽象類了,它是一個可以建立對象的具體類了。
如果定義函數(shù)時只給出一對花括號{}而不給出其局部變量和函數(shù)體語句,則稱該函數(shù)為“空函數(shù)”。
空函數(shù)的作用:
(1)程序設計過程的需要。在設計模塊時,對于一些細節(jié)問題或功能在以后需要時再加上。這樣可在將來準備擴充的地方寫上一個空函數(shù),這樣可使程序的結(jié)構(gòu)清晰,可讀性好,而且易于擴充。
(2)在C++程序中,可以將基類中的虛函數(shù)定義為空函數(shù),通過派生類去實例化,實現(xiàn)多態(tài)。
對于你所說的“void表示主函數(shù)為空函數(shù),沒有返回值”:
void 函數(shù)名(參數(shù));這種形式的函數(shù)定義,是說所定義的函數(shù)沒有返回值。沒有返回值(也就是函數(shù)體內(nèi)沒有return語句),是指函數(shù)只是完成一系列動作,不需要返回值給調(diào)用函數(shù);或者返回值是通過指針等方式返回給調(diào)用函數(shù)的。
您好,很高興回答您的問題。
由于沒有看到其他的內(nèi)容所以只能從結(jié)構(gòu)上來說明相關(guān)含義。
void digdisplay()表示的是這個函數(shù)的定義,其中void表示函數(shù)不帶任何的返回值,digdisplay表示的是函數(shù)名,括號中表示函數(shù)的參數(shù),這里是空的,所以表示不帶任何的返回值。
以上就是我的回答,敬請指正。