zoukankan      html  css  js  c++  java
  • 只在堆或栈上生成对象

    非原创,不喜无看。

    只在堆上生成对象的基本想法是将类的析构函数置为private ,考虑下protected是否也可行。

    View Code
    class OnlyHeapClass {  
     public: 
      OnlyHeapClass(int i):i(i) {  
      }  
        void Destroy()  
        {  
            delete this; // 等效于"OnlyHeapClass::~OnlyHeapClass();", 写  
                         // 成"OnlyHeapClass::~OnlyHeapClass();"更容易理  
                         // 解public成员函数调用private析构函数.  
        }  
      
    private:  
        ~OnlyHeapClass()  
        {  
        }
        int i;
    };  
      
    int main() {  
        OnlyHeapClass *pInst = new OnlyHeapClass(100);  
        OnlyHeapClass Inst(10);
        delete pInst;
       //  pInst ->Destroy(); // 如果类中没有定义Destroy()函数, 而在这里用"delete pInst;"代  
                           // 替"pInst->Destroy();", 则会报错. 因为"delete pInst;"会去调  
                           // 用类的析构函数, 而在类域外调用类的private成员函数必然会报错.  
        return 0;  
    }  

     只能在栈上创建对象的基本想法是重载new,并将其置为private。

    Over

  • 相关阅读:
    uwsgi配置
    sed_shell三剑客
    grep_shell三剑客
    awk_shell三剑客
    spring(二)
    spring(一)
    5G的科普
    应用层协议基础
    IP地址相关运算(如VLSM,超网汇总)
    ARP协议基础
  • 原文地址:https://www.cnblogs.com/westfly/p/2974323.html
Copyright © 2011-2022 走看看