【C++】C++中explicity关键字的使用

本文探讨了C++中explicity关键字的使用,它用于阻止隐式类型转换。通过示例,解释了如何在涉及转化构造器时避免不必要的对象创建和隐式类型转换,强调了强制类型转换的必要性。
摘要由CSDN通过智能技术生成

读者可以预言下面程序的输出:

#include <iostream>
using namespace std;
class Complex
{
    private:
        double real;
        double imag;
    public:
        // 默认构造器无explicity关键字
        Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}
      
        // 比较操作符==,接受一个Complex的参数
        bool operator == (Complex rhs) {
           return (real == rhs.real && imag == rhs.imag)? true : false;
        }
};
int main()
{
    // a Complex object
    Complex com1(3.0, 0.0);
    if (com1 == 3.0)//将Complex与double类型比较
       cout << "Same";
    else
       cout << "Not Same";
     return 0;
} 

输出:

Same

上面Complex的==操作符接受的是一个Complex参数。当程序运行到com1 == 3.0时,程序会自动调用Complex的构造器并且传入参数3.0,然后得到一个新的Complex对象,再将这个新对象传给com1的==操作符。所以程序表面上看起来是Complex和double在进行比较,但实际上程序做了隐式的转化(将double转成了Complex)&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值