zoukankan      html  css  js  c++  java
  • 构造函数初始化问题

    §对const类型的数据成员进行初始化时不能直接赋值,如下面的赋值操作是错误的。

     1 class  C  {
     2     public:
     3         C() {
     4             x = 0;      //OK,x  not const
     5             c = 0;      //ERROR,c  is const
     6         }
     7 
     8     private:
     9         int x;            //nonconst data member
    10         const int c;    // const data  member
    11 };

      因此,在C++中对const类型的数据成员进行初始化时必须为构造函数添加一个初始化列表,如下:

      

    1 class  C{
    2     public3         C () :c(0) {x = -1}
    4         
    5     private:
    6         int x;
    7         const int c;      //const data  member
    8 };

      再次总结:(规则)

      (1)构造函数的初始化段由一个冒号:开始,紧跟在冒号之后的是需要进行初始化的数据成员,然后是由一对小括号括起来的初始值。

      (2)初始化列表仅在构造函数中有效,不能用于其他函数。

      (3)构造函数的初始化列表可以初始化任何数据成员(const 和 非const),但const类型的数据成员只能在初始化列表里初始化,而不能用其他方法进行初始化。

    1 class  C {
    2     public:
    3         C() : c(0), x(-1){}            //empty body
    4     
    5     private:
    6         int x;
    7         const int c;                      //const data member
    8 };
  • 相关阅读:
    C语言博客作业-字符数组
    C语言博客作业--一二维数组
    个人作业5
    个人作业4
    个人作业3
    201521123072 结对编程
    软件工程 个人阅读作业2
    软件工程 个人阅读作业
    java课程设计--WeTalk(201521123072秦贞一)
    201521123072《java程序设计》第十四周学习总结
  • 原文地址:https://www.cnblogs.com/dormant/p/4977028.html
Copyright © 2011-2022 走看看