跟着做的C++20教程-实例31-explicit

实例概要

介绍关键字explicit的作用

实例代码

#include <iostream>
#include <string>

class Person
{
public:
    /*explicit*/ Person(int age)
    {
        m_age = age;
    }

    int getAge()
    {
        return m_age;
    }
private:
    int m_age;
};

int main(int argc, char** argv)
{
    Person a = 3; //如果给构造函数Person(int age)前用explicit修饰,则编译错误
    std::cout << "雇员年龄是" << a.getAge() << "岁" << std::endl;

	return 0;
}

运行结果

/*explicit*/ Person(int age)时:

雇员年龄是3岁

explicit Person(int age)时,编译错误:
在这里插入图片描述

实例解释

  • explicit
    explicit的作用是阻止编译器做隐式转换。主要是针对只有一个参数的构造函数。
    如实例中Person a = 3;,如果没有explicit编译器会自动调用Person(int age)构造函数,也就是隐式地将int类型转换成了Person类型;加上explicit后编译器就不会这么做了,因此会出现编译错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值