之前一直没有理解C++的纯虚函数到底是什么意思,最近突然发现C++和Java完全可以对比着学,两者很多地方都是相通的,比如下面的工厂模式的C++例子就是一个很好的例子:
#include <iostream>
class Animal
{
public:
Animal(){}
~Animal(){}
virtual void bark() = 0;
};
class Dog:public Animal
{
public:
Dog(){}
~Dog(){}
void bark(){std::cout<<"Wang!\n";}
};
class Cat:public Animal
{
public:
Cat(){}
~Cat(){}
void bark(){std::cout<<"Miao!\n";}
};
class AnimalFactory
{
public:
AnimalFactory(){}
~AnimalFactory(){}
virtual Animal* createAnimal() = 0;
};
class DogFactory:public AnimalFactory
{
public:
DogFactory(){}
~DogFactory(){}
Animal* createAnimal()
{
return new Dog();
}
};
class CatFactory:public AnimalFactory
{
public:
CatFactory(){}
~CatFactory(){}
Animal* createAnimal()
{
return new Cat();
}
};
int main(int argc, char** argv)
{
AnimalFactory *factory = new DogFactory();
Animal *animal = factory->createAnimal();
animal->bark();
delete factory;
delete animal;
factory = new CatFactory();
animal = factory->createAnimal();
animal->bark();
delete factory;
delete animal;
return 0;
}