实现只能在堆上创建对象的类
核心思想:
1.构造函数私有化2.提供一个公有的static函数创建对象,该静态成员函数中完成堆对象的创建3.防止拷贝构造 - 可以对拷贝构造函数私有并只声明不实现 - 也可以删除拷贝构造函数的声明(C++11)
class HeapOnly {
public:
static HeapOnly
* CreateHeapOnly() {
return new HeapOnly
;
}
private:
HeapOnly() {
cout
<< "HeapOnly()" << endl
;
}
HeapOnly(const HeapOnly
& h
) = delete;
};
实现只能在栈上创建对象的类
核心思想: 方法一:
1 . 构造函数私有化2 . 提供一个公有的static函数创建对象
class StackOnly {
public:
static StackOnly
CreateStackOnly() {
return StackOnly();
}
private:
StackOnly() {
cout
<< "StackOnly()" << endl
;
}
};
方法二:
只声明不实现 operator new函数
class StackOnly2 {
private:
void* operator new(size_t size
) = delete;
};