zoukankan      html  css  js  c++  java
  • C++类中引用成员和常量成员的初始化(初始化列表)

    如果一个类是这样定义的:

    Class A
    {
         public:
              A(int pram1, int pram2, int pram3);
         privite:
              int a;
              int &b;
              const int c; 
    }

    假如在构造函数中对三个私有变量进行赋值则通常会这样写:

    A::A(int pram1, int pram2, int pram3)
    {
         a=pram1;
         b=pram2;
         c=pram3;
    }

    但是,这样是编译不过的。因为常量和引用初始化必须赋值。所以上面的构造函数的写法只是简单的赋值,并不是初始化。

    正确写法应该是:

    A::A(int pram1, int pram2, int pram3):b(pram2),c(pram3)
    {
         a=pram1;
    }

    采用初始化列表实现了对常量和引用的初始化。采用括号赋值的方法,括号赋值只能用在变量的初始化而不能用在定义之后的赋值。

    凡是有引用类型的成员变量或者常量类型的变量的类,不能有缺省构造函数。默认构造函数没有对引用成员提供默认的初始化机制,也因此造成引用未初始化的编译错误。并且必须使用初始化列表进行初始化const对象、引用对象。

  • 相关阅读:
    zznuoj 2173 春天的英雄梦
    zznuoj 2171: 春天的致富梦
    zznuoj 2169: 春天的打水梦
    zznuoj 2168 大家好 我是水题
    西安赛打铁队检讨书
    B-number HDU
    Bomb HDU
    CodeForces
    1140
    Frequent Subsets Problem
  • 原文地址:https://www.cnblogs.com/visionfeng/p/5735815.html
Copyright © 2011-2022 走看看