不能被继承的类、不能被拷贝的类、只能定义一个对象的类
不能被继承的类
将构造函数和析构函数定义为私有的,这样派生类在构造基类子对象时就不能调用基类私有的构造函数。
class T
{
private:
T() {}
~T() {}
public:
static T* create()
{
return new T();
}
static T* release(T*& p)
{
delete p;
p = 0;
}
};
见构造函数和析构函数声明为 private ,也限制了本身的对象创建。利用静态成员函数来创建创建和释放对象。
这种方式只能在堆上创建对象。
如果还想在栈上创建对象,利用友元机制,声明友元类,可以调用友元类的 private 构造函数和析构函数,但是友元关系不能被继承。其中一个友元类 virtual 继承自含有 private 构造函数和析构函数的被友元类。
不能拷贝的类
拷贝意味着拷贝构造函数和复制运算符,将拷贝构造函数和赋值运算符声明为 protected 的,并且不需要实现。
class T
{
protected:
T(const T& rhs);
T& operator = (const T& rhs);
};
只能声明一个对象的类
即是单例模式
将构造函数声明为 private 以防在栈上随意定义对象
定义一个 static 的本类型指针,只是指向唯一的一个对象
定义一个 static 成员函数,用于获得指向唯一的那个对象的指针
class T
{
private:
T() {}
~T() {}
static T* pt;
public:
static T* getInstance()
{
if (pt == 0)
{
pt = new T();
}
return pt;
}
};
T* T::pt = 0;
http://www.cppblog.com/jake1036/archive/2011/05/21/146870.html
http://blog.csdn.net/xkyx_cn/article/details/2245038
http://www.cublog.cn/u3/112083/showart_2237163.html
http://blog.csdn.net/ericming200409/article/details/5975874
http://blog.csdn.net/wulibin136/article/details/6347215
http://www.cppblog.com/unixfy/archive/2011/04/29/145340.html
posted on 2011-07-23 21:48
unixfy 阅读(735)
评论(0) 编辑 收藏 引用