| 網(wǎng)站首頁 | 關于我們 | 開發(fā)優(yōu)勢 | 產(chǎn)品展示 |
| 合作企業(yè) | 新聞動態(tài) | 聯(lián)系我們 | 電話聯(lián)系 |
文章作者:濟南軟件開發(fā) 時間:2016年12月20日
1.虛函數(shù)(impure virtual)
C++的虛函數(shù)主要作用是“運行時多態(tài)”,父類中提供虛函數(shù)的實現(xiàn),為子類提供默認的函數(shù)實現(xiàn)。
子類可以重寫父類的虛函數(shù)實現(xiàn)子類的特殊化。
如下就是一個父類中的虛函數(shù):
復制代碼
class A
{
public:
virtual void out2(string s)
{
cout<<"A(out2):"<<s<<endl;
}
};
復制代碼
2.純虛函數(shù)(pure virtual)
C++中包含純虛函數(shù)的類,被稱為是“抽象類”。抽象類不能使用new出對象,只有實現(xiàn)了這個純虛函數(shù)的子類才能new出對象。
C++中的純虛函數(shù)更像是“只提供申明,沒有實現(xiàn)”,是對子類的約束,是“接口繼承”。
C++中的純虛函數(shù)也是一種“運行時多態(tài)”。
如下面的類包含純虛函數(shù),就是“抽象類”:
復制代碼
class A
{
public:
virtual void out1(string s)=0;
virtual void out2(string s)
{
cout<<"A(out2):"<<s<<endl;
}
};
復制代碼
3.普通函數(shù)(no-virtual)
普通函數(shù)是靜態(tài)編譯的,沒有運行時多態(tài),只會根據(jù)指針或引用的“字面值”類對象,調(diào)用自己的普通函數(shù)。
普通函數(shù)是父類為子類提供的“強制實現(xiàn)”。
因此,在繼承關系中,子類不應該重寫父類的普通函數(shù),因為函數(shù)的調(diào)用至于類對象的字面值有關。
4.程序綜合實例
復制代碼
#include <iostream>
using namespace std;
class A
{
public:
virtual void out1()=0; ///由子類實現(xiàn)
virtual ~A(){};
virtual void out2() ///默認實現(xiàn)
{
cout<<"A(out2)"<<endl;
}
void out3() ///強制實現(xiàn)
{
cout<<"A(out3)"<<endl;
}
};
class B:public A
{
public:
virtual ~B(){};
void out1()
{
cout<<"B(out1)"<<endl;
}
void out2()
{
cout<<"B(out2)"<<endl;
}
void out3()
{
cout<<"B(out3)"<<endl;
}
};
int main()
{
A *ab=new B;
ab->out1();
ab->out2();
ab->out3();
cout<<"************************"<<endl;
B *bb=new B;
bb->out1();
bb->out2();
bb->out3();
delete ab;
delete bb;
return 0;
}
復制代碼
想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。