C++ 17 —— 纯虚函数

来源:互联网 发布:java解析器是什么 编辑:程序博客网 时间:2024/06/18 07:22

源码

// 17Ploy_PureVirtual.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "iostream.h"class Pet{public:    void Speak() = 0;    //问题1. 对于Pet类,存在一个纯虚函数,那么Pet可以实例化吗?    //问题2. Pet如果不可以实例化,那么存在的意义是什么?    //问题3. 如果某个Pet的子类,没有重写(overwriting)Speak函数,合理吗?    //问题4. 纯虚函数可以有函数体吗?};class Dog : public Pet{public:    void Speak()    {        cout << "WangWang" << endl;    }};void Feeding(Pet& p){}int main(int argc, char* argv[]){    printf("Hello World!\n");    return 0;}

问题1. 对于Pet类,存在一个纯虚函数,那么Pet可以实例化吗?

不能。

问题2. Pet如果不可以实例化,那么存在的意义是什么?

当想在基类中抽象出一个方法,且该基类只做能被继承,而不能被实例化时使用纯虚函数。

如果某个Pet的子类,没有重写(overwriting)Speak函数,合理吗?

不合理。

问题4. 纯虚函数可以有函数体吗?

可以