【C++】实现只能在堆(&&栈)上创建对象的类

mac2024-03-13  28

实现只能在堆上创建对象的类

 核心思想:

1.构造函数私有化2.提供一个公有的static函数创建对象,该静态成员函数中完成堆对象的创建3.防止拷贝构造   - 可以对拷贝构造函数私有并只声明不实现   - 也可以删除拷贝构造函数的声明(C++11) class HeapOnly { public: static HeapOnly* CreateHeapOnly() { return new HeapOnly; } private: HeapOnly() { cout << "HeapOnly()" << endl; } //防拷贝: 只声明不实现 //HeapOnly(const HeapOnly& h); //防拷贝:C++11 删除函数的声明 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; };
最新回复(0)