虚函数
1 虚析构函数
作用是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。 并不是所有类的析构函数都要写成虚函数,因为当类有函数时,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的内存空间,所以只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。
class Base {
public:
virtual ~Base(){};
}
2 纯虚函数
纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。
class Base {
public:
virtual void show() = 0;
}
3 纯虚析构函数
析构函数可以声明为纯虚析构函数,用于基类刚好没有任何纯虚函数的情况。纯虚析构函数需要在基类中定义实现,除析构函数外,其他纯虚函数必须在派生类中定义实现。
class Base {
public:
virtual ~Base() = 0;
}
Base::~Base() {}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 add358@163.com
文章标题:虚函数
文章字数:309
本文作者:Jake Yang
发布时间:2017-07-27, 00:00:00
最后更新:2019-12-16, 16:02:46
原始链接:https://add358.github.io/2017/07/27/Language-CXX-2017-07-27-虚函数/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。