zoukankan      html  css  js  c++  java
  • nonlocal static对象初始化【EC++笔记】

    View Code
    class TEST
    {
    public:
    size_t TestFun1() const;
    private:
    int mNum;
    };

    extern TEST temptest; //修改前

    TEST& tp() //修改后
    {
    static TEST temptest;
    return temptest;

    }

    class TEST2
    {
    public:
    TEST2(TEST temptest)
    {
    mNum = temptest.TestFun1(); //修改前
    mNum = tp().TestFun1(); //修改后
    }

    private:
    int mNum;
    };

    int main()
    {
    //extern TEST temptest; non-local static对象 非本地的静态对象
    //假如temptest和temptest2是在不同的编译单元
    //没办法保证temptest在temptest2之前被初始化
    //方法:使用函数返回的"指向static对象"的引用,而不再使用static对象本身
    //第一行初始化,第二行返回,保证提前初始化
    TEST2 temptest2(temptest);

    return 0;
    }
  • 相关阅读:
    typescript-定义静态类型和对象类型
    typescript-全局安装
    Cube-ui的使用
    mobx-react
    Calatan Number
    快速排序
    Boyer-Moore
    优先级队列
    PointNet环境搭建
    h5py库
  • 原文地址:https://www.cnblogs.com/guyan/p/2402983.html
Copyright © 2011-2022 走看看