zoukankan      html  css  js  c++  java
  • Effective C++ 笔记

    无参构造函数如何暴躁的构造.

    先来看看标准的raw_memory :

    void *intRawVar = operator new[](5*sizeof(int)); // create int raw memory
    int *intVars = static_cast<int *>(intRawVar); // let int object to point this raw memory
    for(int i=0;i<5;i++)
    {
        new(&intVars[i])int(i*10);
    }
    for(int i=0;i<5;i++)
    {
        cout << intVars[i] <<endl;
    }
    operator delete[](intRawVar);

    无参数如何暴力构造

    #include <iostream>
    class EquipmentPiece
    {
    public:
        EquipmentPiece(int IDNumber){
            _var = IDNumber;
        }
        ~EquipmentPiece()
        {
    
        }
    private:
        int _var;
    };
    
    
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        //<1>
        //EquipmentPiece piece[10]; //error not default constructor
    
        //<2>
        typedef EquipmentPiece* PEP; //this method is ok,have resource leak & big memory allocation
        PEP piece[10]; // create ten EquipmentPiece* pointer
        //PEP *piece = new PEP[10]; // always is ok
        for(int i=0;i<10;i++)
        {
            piece[i] = new EquipmentPiece(i);
        }
        for(int i=0;i<10;i++)
        {
            delete piece[i];
        }
    
        void *rawMemory = operator new[](10*sizeof(EquipmentPiece));
        EquipmentPiece *pieces = static_cast<EquipmentPiece*>(rawMemory);
        for(int i=0;i<10;i++)
        {
            new(&pieces[i])EquipmentPiece(i);
        }
        // release the EquipmentPiece object with reverse direction
        for(int i=9;i >=0;--i)
        {
            pieces[i].~EquipmentPiece();
        }
        // release the raw memory
        operator delete[](rawMemory);
        return 0;
    }
  • 相关阅读:
    2.1.4 现代计算机的设计原则(译)
    2.1.2 指令执行(译)
    计算机体系结构之一体系结构【译】
    2.2.1 比特【译】
    2.1.6 处理器级并行【译】
    jQery Datatables回调函数中文
    彪悍的人生不需要解释
    程序员读书雷达
    打开页面自动打开QQ的javascript代码
    EF大数据插入
  • 原文地址:https://www.cnblogs.com/gearslogy/p/6395806.html
Copyright © 2011-2022 走看看