设计一个只能在堆上或栈上实例化的类

来源:互联网 发布:python expect eof 编辑:程序博客网 时间:2024/06/03 14:52

设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类:

//只能在堆内存上实例化的类class CHeapOnly{public:    CHeapOnly()    {        cout << "Constructor() of CHeapOnly!" << endl;    }    void Destroy() const    {        delete this;    }private:    ~CHeapOnly()    {        cout << "Destructor of CHeapOnly!" << endl;    }};//只能在栈内存上实例化的类,就是不能使用new来构造类,把operator new私有化class CStackOnly{public:    CStackOnly()    {        cout << "Constructor of CStackOnly!" << endl;    }    ~CStackOnly()    {        cout << "Destrucotr of CStackOnly!" << endl;    }private:    void* operator new(size_t size)    {    }    void operator delete(void * ptr)    {    }};int main(){    //use of CHeapOnly    CHeapOnly* pHeap = new CHeapOnly;    pHeap->Destroy();    //err use of CHeapOnly    //CHeapOnly objHeap;    //use of CStackOnly    CStackOnly objStack;    //error use of CStackOnly    //CStackOnly* pStack = new CStackOnly;    return 0;}




原创粉丝点击