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 };
  • 相关阅读:
    1. 命令执行漏洞简介
    3. 从零开始学CSRF
    2. DVWA亲测CSRF漏洞
    使用pt-fifo-split 工具往mysql插入海量数据
    如何打印矩阵
    年轻人,你活着不是为了观察K线做布朗运动
    Python 之匿名函数和偏函数
    Python之闭包
    Python之装饰器
    Python之with语句
  • 原文地址:https://www.cnblogs.com/dormant/p/4977028.html
Copyright © 2011-2022 走看看