当子类从基类继承时会自动调用父类的构造函数和析构函数:
#include<iostream>
using namespace std;
class sealedClass
{
public:
static sealedClass* getInstance()
{
return new sealedClass();
}
static void deleteInstance(sealedClass* pInstance)
{
delete pInstance;
}
public:
sealedClass()
{
cout << "base class construct function!"<<endl;
}
~sealedClass() {}
};
class k:public sealedClass
{
public:
k()
{
cout << "subclass construct functiono!"<<endl;
}
};
int main()
{
k k1;
}
当把基类的构造函数和析构函数设为私有成员时,子类继承的时候由于调用不了父类的构造函数和析构函数而导致编译错误 :
通过定义公有的静态函数来创建和释放类的实例 :
#include<iostream>
using namespace std;
class sealedClass
{
//通过定义公有的静态函数来创建和释放类的实例
public:
static sealedClass* getInstance()
{
return new sealedClass();
}
static void deleteInstance(sealedClass* pInstance)
{
delete pInstance;
}
//通过将类的构造函数和析构函数设为私有成员,从而使该类不能被其它类继承
private:
sealedClass()
{
cout << "base class construct function!"<<endl;
}
~sealedClass() {}
};
int main()
{
sealedClass* pInstance;
pInstance = sealedClass::getInstance();
pInstance->deleteInstance(pInstance);
}