C++ 虛函數(shù)的詳解及簡(jiǎn)單實(shí)例
C++ 虛函數(shù)的詳解
虛函數(shù)的使用和純虛函數(shù)的使用。
虛函數(shù)是在基類(lèi)定義,然后子類(lèi)重寫(xiě)這個(gè)函數(shù)后,基類(lèi)的指針指向子類(lèi)的對(duì)象,可以調(diào)用這個(gè)函數(shù),這個(gè)函數(shù)同時(shí)保留這子類(lèi)重寫(xiě)的功能。
純虛函數(shù)是可以不用在基類(lèi)定義,只需要聲明就可以了,然后因?yàn)槭羌兲摵瘮?shù),是不能產(chǎn)生基類(lèi)的對(duì)象,但是可以產(chǎn)生基類(lèi)的指針。
純虛函數(shù)和虛函數(shù)最主要的區(qū)別在于,純虛函數(shù)所在的基類(lèi)是不能產(chǎn)生對(duì)象的,而虛函數(shù)的基類(lèi)是可以產(chǎn)生對(duì)象的。
// pointers to base class
#include <iostream>
using namespace std;
class Polygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area(){
return 0;
}
};
class Rectangle: public Polygon {
public:
int area()
{ return width*height; }
};
class Triangle: public Polygon {
public:
int area()
{ return width*height/2; }
};
int main(){
Polygon *p1,*p2;
Rectangle rec;
Triangle tri;
p1 = &rec;
p2 = &tri;
p1->set_values(1,2);
p2->set_values(2,4);
cout << rec.area() << endl;
cout << tri.area() << endl;
cout << p1->area() << endl;
cout << p2->area() << endl;
return 0;
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
帶你用C語(yǔ)言實(shí)現(xiàn)strtok和字符串分割函數(shù)
下面小編就為大家?guī)?lái)一篇c語(yǔ)言中字符串分割函數(shù)及實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-09-09
C++ 流插入和流提取運(yùn)算符的重載的實(shí)現(xiàn)
這篇文章主要介紹了C++ 流插入和流提取運(yùn)算符的重載的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令
本文主要介紹了c++調(diào)用動(dòng)態(tài)庫(kù)LNK2019和LNK1120無(wú)法解析的外部命令, 出現(xiàn)這個(gè)錯(cuò)誤一般都是函數(shù)只找到聲明但沒(méi)有實(shí)現(xiàn),或者是少了什么鏈接庫(kù),下面就來(lái)解決一下2024-06-06
帶你了解C語(yǔ)言的數(shù)據(jù)的存儲(chǔ)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的數(shù)據(jù)的存儲(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來(lái)幫助2021-08-08
C語(yǔ)言中用棧+隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置
這篇文章主要介紹了C語(yǔ)言中用利用棧和隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置的相關(guān)資料,對(duì)正在學(xué)習(xí)的小伙伴有一定的參考價(jià)值,需要的可以參考一下,希望對(duì)你有所幫助2022-02-02
C++實(shí)現(xiàn)LeetCode(127.詞語(yǔ)階梯)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(127.詞語(yǔ)階梯),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++11中移動(dòng)構(gòu)造函數(shù)案例代碼
C++11 標(biāo)準(zhǔn)中為了滿足用戶使用左值初始化同類(lèi)對(duì)象時(shí)也通過(guò)移動(dòng)構(gòu)造函數(shù)完成的需求,新引入了 std::move() 函數(shù),它可以將左值強(qiáng)制轉(zhuǎn)換成對(duì)應(yīng)的右值,由此便可以使用移動(dòng)構(gòu)造函數(shù),對(duì)C++11移動(dòng)構(gòu)造函數(shù)相關(guān)知識(shí)感興趣的朋友一起看看吧2023-01-01

