默认情况下C++的构造函数和析构都是public类型的,但有时候我们会将其设为private类型:
1.将析构函数设为private类型,构造函数public类型:
这种情况下由于系统不能在对象离开作用域是调用析构函数进行清理工作,故不能通过定义对象的方式来获取对象,
但是可以通过new从堆上来分配对象,然后通过定义一个public类型的接口调用析构函数进行清理工作
2.将构造函数设为private类型:
这种情况下无论是在栈上还是堆上都不能从外部获取对象,但我们可以通过static成员方法来创建对象,比如用来实现C++中的单例模式
当一个类作为基类使用时一般将该类的析构函数设为virtual类型这是因为当我们使用基类指针来指向其派生类的时候,在delete该对象时如果没有virtual类型则会只调用基类的析构函数不会调用派生类析构函数,但我们的派生类析构函数中有清理工作时必将导致内存泄漏,所以把基类的析构函数设为virtual时在删除该对象时将会先调用派生类的析构函数