不能被继承的类:将构造函数设为private,然后用公有的static函数访问:
class FF
{
private:
FF(){}
public:
static FF* init()
{
FF* g = new FF();
return g;
}
};
class GG: public FF
{
};
int main()
{
FF* f = FF::init();
GG g; // ERROR!
return 0;
}
单件:
class Singleton
{
public:
static Singleton * Instance();
~Singleton();
private:
Singleton();
static Singleton * instance;
};
Singleton * Singleton::instance = 0;
Singleton::Singleton()
{
}
Singleton::~Singleton()
{
}
Singleton * Singleton::Instance()
{
if (instance == 0) {
instance = new Singleton();
}
return instance;
}