C++ 中的virtual关键字
2016-09-21 09:10 雄风狂飙 阅读(174) 评论(0) 收藏 举报在一个公司混迹多年,才发现自己的编码水平低下不少,近来想提升一下,重翻C++primer,重拾virtual用法。
经典中如是对virtual进行解释并展开后续讨论:
1.只有virtual成员可以进行动态绑定;
2.必须通过基类的引用或者指针调用。
验证代码如下:
#include <iostream>
#include <string>
using namespace std;
class Base{
private:
public:
Base(){
cout<<"base constructor!"<<endl;
}
~Base(){}
virtual void virtualfunction()
{
cout<<"Base virtual function"<<endl;
}
void function()
{
cout<<"Base function"<<endl;
}
};
class inheBase:public Base{
private:
public:
inheBase(){
cout<<"inherit constructor!"<<endl;
}
~inheBase(){}
void virtualfunction()
{
cout<<"inherit virtual function"<<endl;
}
void function()
{
cout<<"inherit Base function"<<endl;
}
};
int main(int argc, char* argv[])
{
Base b;
inheBase inB;
b = inB;
b.virtualfunction();
b.function();
Base *bt = NULL;
bt = &inB;
bt->virtualfunction();
bt->function();
bt->Base::virtualfunction();
return 0;
}
结果如下:

结果清楚,无需多言。
浙公网安备 33010602011771号