类的初始化列表与const成员

初始化列表

  • 成员初始化顺序与在列表中的顺序无关
  • 成员的初始化顺序与在类中的声明顺序相同
  • 初始化列表在构造函数执行前执行

类中的const成员

  • 类中的const成员只能且必须在初始化列表初始化
  • 类中的const成员本质是只读变量,有内存空间。不是常量,不会进符号表
#include <stdio.h>

class Value
{
private:
    const int value;
public:
    Value(int i):value(i)
    {
        printf("i = %d, value= %d\n", i, value);
    }
    int get()
    {
        return value;
    }
    int set(int v)
    {
        int& ref = const_cast<int&>(value);
        ref = v;
    }
};

class Test
{
private:
    Value v1;
    Value v2;
    Value v3;
public:
    Test() : v2(2), v1(1), v3(3)
    {
      printf("Test::Test()\n");
      v1.set(-1);
      v2.set(-2);
      v3.set(-3);
      printf("v1 = %d, v2 = %d, v3= %d\n",v1, v2, v3);
    }
};

int main()
{
    Test t;
    
    return 0;
}

G++编译器结果:

i = 1, value= 1
i = 2, value= 2
i = 3, value= 3
Test::Test()
v1 = -1, v2 = -2, v3= -3

 

转载于:https://my.oschina.net/u/3472252/blog/2874782

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值