看代码时时无意看到代码里某类的纯虚函数居然有实现,吓我一跳,果真学无止境啊!
在此转载相关文章一篇,以便遗忘:https://blog.csdn.net/happymawolf/article/details/6369585
今天,我读到《effective c++》的第34条款,里面竟然提到纯虚函数也是可以定义的,大吃一惊,赶快打开vs2005,自己编写了一段代码,编译运行,发现竟然真的可以!
俺的代码:
class A
{
public:
virtual void pureVirtualFunc() = 0;
};
void A::pureVirtualFunc()
{
cout << "I'am pureVirtualFunc" << endl;
}
class B : public A
{
public:
void pureVirtualFunc()
{
A::pureVirtualFunc();
cout << "I belong to B!";
}
};
int main(void)
{
B b;
b.pureVirtualFunc();
return 0;
}
运行结果:
I’am pureVirtualFuncI belong to B!请按任意键继续. . .
原来抽象类是可以对纯虚函数进行定义的,在其子类中也是可以使用抽象父类的缺省实现!这一切对我来说显得这么突然!好像腿脚一软,站不稳了!是的,以前天天啃个不停个的教材竟然存在如此偏差!等等!好像教材里也没错!里面并没有说“不能”进行函数实现,而是根本就没有提到要去实现。所以老师和天真的我们都默认为不能实现咯!
在此我深深感悟到,目光短浅和学无止境的真正含义了!