C++如何實現只能動態分配類物件,不能定義類物件
阿新 • • 發佈:2018-11-22
動態分配類物件:就是使用運算子new來建立一個類的物件,在堆上分配記憶體。
靜態分配類物件:就是A a,由編譯器建立類物件,在棧上分配記憶體。
1)動態分配類物件
把類的建構函式和解構函式設為protected屬性。類物件不能訪問,但是派生類可以繼承,也可以訪問。
同時,建立create和destroy兩個函式,用於建立類物件。
(create函式設為static,原因是,建立物件的時候A *p=A::create().只有靜態成員函式才能有類名直接訪問)
class A { protected: A() {} ~A() {} public: static A* create() { return new A(); } void destroy() { delete this; } };
2)靜態分配物件
class A
{
private:
void* operator new(size_t t)//函式的第一個引數與返回值都是固定的
{ }
void operator delete(void *ptr)//過載了new,就需要過載delete
{ }
public:
A() {}
~A() {}
}
本文轉自:https://blog.csdn.net/xiaominkong123/article/details/52162956