48、类如何实现只能静态分配和只能动态分配
前者是把 new、 delete 运算符重载为 private 属性。
后者是把构造、析构函数设为 protected 属性,再⽤⼦类来动态创建
建⽴类的对象有两种⽅式:
静态建⽴,静态建⽴⼀个类对象,就是由编译器为对象在栈空间中分配内存; 动态建⽴, A *p = new A(); 动态建⽴⼀个类对象,就是使⽤ new 运算符为对象在堆空间中分配内存。这个过程分为两步,第⼀步执⾏ operator new() 函数,在堆中搜索⼀块内存并进⾏分配;第⼆步调⽤类构造函数构造对象;
只有使⽤ new 运算符,对象才会被建⽴在堆上,因此只要限制 new 运算符就可以实现类对象只能建⽴在栈上。可以将 new 运算符设为私有。
Last updated