Open GG668 opened 2 years ago
78、类如何实现只能静态分配和只能动态分配 前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建
我这算不算绕过了动态分配,直接静态分配(前提是不使用友元函数和A的内部函数),我重载过A的操作符 new,发现并没有调用
#include <iostream> using namespace std; //只能动态分配 class A { protected: A(){cout<< "1" <<endl;} ~A(){} public: void test(){A a;} }; class B: public A { public: B(){} }; int main() { B b; return 0; }
只静态分配 void* operator new(size_t size) = delete; 这样子应该可以禁用 new,但是只动态分配好像没办法完全杜绝,总有漏洞
78、类如何实现只能静态分配和只能动态分配 前者是把new、delete运算符重载为private属性。后者是把构造、析构函数设为protected属性,再用子类来动态创建
我这算不算绕过了动态分配,直接静态分配(前提是不使用友元函数和A的内部函数),我重载过A的操作符 new,发现并没有调用