C/C++教程

effective c++ 条款4:确定对象被使用前已先被初始化

本文主要是介绍effective c++ 条款4:确定对象被使用前已先被初始化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • 确保每一个构造函数都将对象的每一个成员初始化

  • 使用member initialization list 替换 assignment:

    • 总是在初值列中列出所有成员变量
    • base classes比derived classes更早初始化,而class的成员变量总以其声明次序被初始化,即使他们在成员初值列中以不同次序出现,也不会有任何影响
    //assignment
    class tmp
    {
    private:
        int age;
        double name;
    public:
        tmp( const int _age, const double _name)
        {
            age = _age
            name = _name;
        }
    }
    
    //member initialization list
    class tmp
    {
    private:
        int age;
        double name;
    public:
        tmp( const int _age, const double _name)
        : age(_age), name(_name){}
    }
    
  • 对定义于不同编译单元(产出单一目标文件的源码)内的non-local static对象的初始化序列无明确定义

    • 问题:某编译单元内的某个non-local static对象的初始化动作使用了另一编译单元内的某个non-local static对象,而所用的对象可能尚未被初始化
    • 解决:将每个non-local static对象转至自己的专属函数内且声明为static,函数则返回reference指向它所含的对象
  • please remember:

    • 为内置型对象进行手工初始化
    • 构造函数最好使用member initialization list。初值列列出的成员变量,其排序次序和他们在class中的声明次序相同
    • 以local static对象替换non-local static对象
这篇关于effective c++ 条款4:确定对象被使用前已先被初始化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!