1. 程式人生 > >C++如何實現只能動態分配類物件,不能定義類物件

C++如何實現只能動態分配類物件,不能定義類物件

動態分配類物件:就是使用運算子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