C++中的类型转换函数

本文讨论了C++中的隐式类型转换,特别是通过单变量构造函数和类型转换操作符实现的情况。作者指出,这种转换可能导致信息丢失和难以调试的问题。为了解决这些问题,建议使用`explicit`关键字来防止隐式构造函数调用,并提供显式转换函数替代类型转换操作符,以提高代码的可读性和安全性。
摘要由CSDN通过智能技术生成

时间:2014.03.10

地点:基地二楼

------------------------------------------------------------------------------------

一、简述

  C++允许编译器在不同类型之间执行隐式转换,和C一样,char可默默转换为int,short可默默转换为double,正因为这种隐式转换,你可以将short类型交给一个期望获得double类型的函数来处理,这和传统的C风格一脉相承。但可怕的是C++还可将int转换为short,以及将double转换为char等,这可能导致信息丢失。而在我们自己设计类的时候,也可以选择提供适当的函数,供编译器拿来做隐式转换。

------------------------------------------------------------------------------------

二、隐式转换方式

1.单变量构造函数:如果构造函数声明了单一参数,或者有多个参数但除第一个参数不做要求外都有默认值可执行隐式转换:

class Name{
public:
  Name(const string& s);   //可把string转换为Name类型
.....
};


class Rational{
public:
  Rational(int numerator0,int denominator=1);
...
};


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值