C++语法系列——隐式类类型转换

本文介绍了C++中的隐式类类型转换,包括何时发生这种情况,例如在函数调用、赋值和返回时。此外,讨论了使用`explicit`关键字如何改变构造函数的行为,以防止单形参构造函数的隐式转换。
摘要由CSDN通过智能技术生成

目录

 

(1)隐式类类型转换?

(2)隐式类类型转换何时发生?

(3)构造函数在加上头部修饰符explicit后有何变化?


 

(1)隐式类类型转换?

以类A举例说明什么是隐式类类型转换及其本质

class A
{
public:
    int age;
    string name;
public:
    A() = default;
    A( int _age ): age( _age ) { };
};
void print( A ind ) { cout << ind.age << " " << ind.name << endl; };

int main()
{
    print(80);
    
    A byage;
    byage = 70;
}

在上述main函数中,以80为实参调用print()函数、将70赋给类A的对象,均属于隐式类类型转换。

当对方需要类型A的对象,而己方给出的是类型A的数据成员时,隐式类类型转换发生了,它实现了从一个类的数据成员到此类对象的转换

上述过程的本质是编译器借助对应的构造函数,帮我们创建了临时对象,随后利用此对象进行参数传递和赋值:

print(80) ==== A temp(80);  print(temp);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值