源码
// 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. 纯虚函数可以有函数体吗?
可以