您的位置:首页 > 其它

纯虚函数小记

2015-11-30 21:49 211 查看
#include <iostream>

using namespace std;

class a{
public:
virtual void f()=0;
};

void a::f(){//纯虚函数也可以被定义(虽然通常不这么做),只不过必须放在类的外部
cout<<"class a";
}

class b:public a{
public:
void f() override{
cout<<"class b";
}
};

int main()
{
a a1;//出错,抽象基类(或抽象基类派生的并且没有重写纯虚函数的派生类)不能定义对象(不能实例化),
//就算抽象基类定义了纯虚函数,也不行!

b b1;//正确,抽象基类的派生类必须重写纯虚函数,才能定义对象
a* a2=&b1;//正确
b1.f();
cout<<endl;
a2->f();
system("pause");
return 0;
}
//定义纯虚函数的目的在于,使派生类仅仅只是继承函数的接口。
//纯虚函数的意义,让所有的类对象(主要是派生类对象)都可以执行纯虚函数的动作,但类无法为纯虚函数提供一个合理的缺省实现。
//所以类纯虚函数的声明就是在告诉子类的设计者,“你必须提供一个纯虚函数的实现,但我不知道你会怎样实现它”。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: