首页 > 试题广场 > c++中,限制一个类的对象实例,只能在堆上分配,或者只能在栈上分配,有什么方法没?
[问答题]
c++中,限制一个类的对象实例,只能在堆上分配,或者只能在栈上分配,有什么方法没?

5个回答

添加回答
  • 推荐
    palcement new
       查看全部
    编辑于 2015-02-07 16:36:57 回复(0)
  • //只能在堆上分配对象并且可以实现继承
    class Test_Heap{
    protected:
        Test_Stack(){};
        ~Test_Stack(){};
    public:
        static Test_Stack* create(){
             return new Test_Stack();
        }
        void destroy(){
            delete this;
        }
    };
    
    //只能在栈上分配对象并且可以实现继承
    class Test_Heap{
    private:
        void* operator new(size_t t){};
        void operator delete(void* ptr){};
    public:
        Test_Heap(){};
        ~Test_Heap(){};
    };

    发表于 2015-10-25 16:29:17 回复(0)
  • 限制 只能 栈上分配:  重载了new运算符,并设为私有。
    限制 只能 堆上分配 :将构造函数设置为私有。
    发表于 2015-01-13 15:14:29 回复(2)
  • class CSingleton  
    {  
        public:  
        static CSingleton * GetInstance()  
        {  
            if(NULL == m_pInstance)  
                m_pInstance = new CSingleton();  
            return m_pInstance;  
        }  
        static void Release()   //必须,否则会导致内存泄露  
        {  
            if(NULL != m_pInstance)  
            {  
                delete m_pInstance;  
                m_pInstance = NULL;  
            }  
        }  
        protected:  
            CSingleton()  
            {  
                cout<<"CSingleton"<<endl;  
            };  
            static CSingleton * m_pInstance;  
    };  
    CSingleton* CSingleton::m_pInstance = NULL; 
    编辑于 2016-07-07 20:19:11 回复(0)
  • http://blog.csdn.net/szchtx/article/details/12000867
     因此,将析构函数设为私有,类对象就无法建立在栈上了,这种方法我在c++primer看到的一样
    发表于 2015-09-25 17:24:14 回复(0)
牛客网,程序员必备求职神器
QQ群:169195721
微 信:www_nowcoder_com 关注
微 博:牛客网 关注

扫一扫,把题目装进口袋