7. C++ explicit 关键字详解

1. C++ explicit 关键字详解

【导读】:如何防止C++构造函数的隐式转换,explicit关键字可以帮助我们解决问题。


1.1 explicit关键字的作用

关键字explicit可以阻止隐式转换的发生。

例如: C++中只带有一个参数的构造函数,或者或者除了第一个参数外其余参数都有缺省值的多参构造函数,承担了两个角色:

1.用于构建单参数的类对象。

2.隐含的类型转换操作符。

例如:一个类A的构造函数A(int i)就是,既可以用来作为构造器,又可以实现隐式转换A a=1;因为1可以通过构造函数A(int i)转换为一个类A的对象。(隐含的类型转换操作符)

但有时我们并不想让他进行隐式类型转换,这时C++的explicit关键字就起到作用了。

注意:当类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不能写在定义中

下面我将为大家介绍三种使用explicit关键字的情况:

1.2 类型转换函数
#include<iostream>
using namespace std;

class Fraction{
public:  
	Fraction(int numerator, int denominator = 1): m_numerator(numerator),m_denominator(denominator) 	{}  	
    operator double() const{    
		return (double)m_numerator/m_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九五一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值