c++学习笔记 隐式类型转换以及explicit,构造函数初始化列表

Class A
{
public:
    int a;
    int b;
    int c;
    A(int temp);
}

A::A(int temp)
{
    a = 0;
    b = temp;
    c = 0;
}

void func(A temp)
{
    return;
}

假如使用:

A test = 3;
A test2 = {4};
func(3);

都会使得数字被编译器隐式转换成一个临时的类对象。如果要阻止系统进行隐式的类型转换,就需要在对应的构造函数前加上explicit。例如:

Class A
{
public:
    int a;
    int b;
    int c;
    explicit A(int temp);
}

构造函数初始化列表:

Class A
{
public:
    int a;
    int b;
    int c;
    A(int tempa,int tempb,int tempc);
}


A::A(int tempa,int tempb,int tempc)
:a(tempa),b(tempb),c(tempc)
{
    
}

由于构造函数在函数内部赋值前,系统都会给成员变量进行一次随机的初始化,所以构造函数初始化列表可以去掉系统随机初始化的过程,又不需要赋值,提升了效率。无论初始化列表什么样的顺序,实际变量初始化的顺序由类定义中成员变量的声明顺序而定。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值