zoukankan      html  css  js  c++  java
  • (1)确定对象被使用前已经被初始化

    在对象使用之前将它初始化,对于无任何成员的内置类型,你必须手工完成此事。

    例如:

    int x = 0;

    const char *text = " ";

    double d;

    std::cin >> d;    //以input stream 的方式完成初始化

    内置类型以外的任何其他东西,初始化责任落在构造函数身上。确保每一个构造函数都将对象的每一个成员初始化。

     1  1 class CTest {
     2  2 public:
     3  3     int a;
     4  4     float b;
     5  5 
     6  6     //构造函数初始化列表
     7  7     CTest(): a(0),b(2.3) {
     8  8     }
     9  9 
    10 10     //构造函数内部赋值
    11 11     CTest() {
    12 12         a=0;
    13 13         b=2.3;
    14 14     }
    15 15 };
    View Code

    初始化和赋值对内置类型的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。

    C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。

    为避免需要记住成员变量何时必须在成员初值列表中初始化,何时不需要,最简单的做法就是:总是使用成员初值列。这样做有时候绝对必要,且又往往比赋值更有效。

    为免除“跨编译单元之初始化次序”问题,请以local static 对象替换non - local static 对象。( ?)

    ——整理自《Effective C++》

  • 相关阅读:
    linux下最大文件数
    Apache实现Web Server负载均衡
    linux环境变量
    iptables用法
    read 不回显的方法
    Linux间的进程通信;以及子进程的创建
    Linux总结
    自实现部分string类的功能
    C语言 (内存) 四道经典题目
    STL 容器(vector 和 list )
  • 原文地址:https://www.cnblogs.com/thunder-wu/p/6670567.html
Copyright © 2011-2022 走看看