到底能不能编写一个只能在栈上创建对象的类
最近,只堆只栈的问题有频频出现,以前没有仔细考虑过只是照着前人的写便是了。
刚看了一篇博文,里面用的方法也是如此。
大致代码如下:
#include <iostream>using std::cout;using std::endl;class OnlyHeap {public: OnlyHeap(); private: ~OnlyHeap();};class OnlyStack {public: OnlyStack();private: void* operator new(size_t);};OnlyStack o;/* 满足不了只能在栈上创建对象 */int main(){ return 0;}#include <iostream>#include <memory>using namespace std;class A{public: A() :a(111) { cout<<"构造A"<<endl; } ~A() { cout<<"析构A"<<endl; } int a;private: void* operator new (size_t t){}; void operator delete(void *ptr){ std::cout<<"op delete"<<std::endl; }; };int main(){ A* ps = (A*)malloc(sizeof(A)); ::new(ps) A(); std::cout<<ps->a<<std::endl; ps->~A();//很奇怪这里不能单步跟踪进去。 free(ps); system("pause"); return 0;}
[解决办法]