- 栈上创建对象:只有使用new运算符,对象才会建立在堆上,因此,只要禁用new运算符就可以实现类对象只能建立在栈上。将operator new()设为私有即可。代码如下:
class B { private: void* operator new (size_t t) {} // 注意函数的第一个参数和返回值都是固定的 void operator delete (void* ptr) {} // 重载了new就需要重载delete public: B() {} ~B() {} };
- 堆上创建对象:将析构函数设为私有(编译器就不会在栈空间上为类对象分配内存),类对象就无法建立在栈上了。代码如下:
class A { public: A() {}; static A* create() { return new A(); } void destory() { delete this; } protected: ~A() {} };
-
参考:https://www.nowcoder.com/questionTerminal/0a584aa13f804f3ea72b442a065a7618
c++对象只能在堆上或者栈上创建
猜你喜欢
转载自blog.csdn.net/YRC333/article/details/99307264
今日推荐
周排行