virtual 函数定义后的=0是指纯虚函数。析构函数设置为公有是让其可以析构,私有的析构函数不能正常析构调用。至于为什么这个类的构造函数设置为保护,是因为有纯虚函数的类都是抽象类,抽象类不能实例化,因此这么写可以提醒程序员不要new。
设置成保护的是为了防止在类外面创建对象,例如设置成保护的,就不允许这样创建对象:Factory fc;“~Factory()=0”中的“=0”代表该函数是一个纯虚函数,即没有实现的函数,需要子类继承实现该函数。