动态分配类对象:就是使用运算符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.youkuaiyun.com/xiaominkong123/article/details/52162956