第11章 使用类——类型转换(二)将自定义类型转换为内置类型

本文介绍了如何在C++中使用转换函数将自定义类型转换为内置类型,如double和int。转换函数是类方法,无返回类型和参数。通过示例展示了转换函数的使用,同时讨论了隐式转换可能带来的问题以及如何通过`explicit`关键字和非转换函数来避免这些问题。最后,总结了C++中类的类型转换机制,包括构造函数和转换函数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章是作者根据史蒂芬·普拉达所著的《C++ Primer Plus》而整理出的读书笔记,如果您在浏览过程中发现了什么错误,烦请告知。另外,此书由浅入深,非常适合有C语言基础的人学习,感兴趣的朋友可以自行阅读此书籍。

上一节我们可以利用构造函数,将内置类型(double)转换为自定义类型(Stonewt),那么问题来了,可以将自定义类型转换成内置类型吗?

比如如下的语句:

Stonewt wolfe(285.7);
double host = wolfe;

构造函数只用于从某种类型到类类型的转换。要进行相反的转换,必须使用特殊的C++运算符函数——转换函数。

转换函数的格式如下:

operator typeName();

需注意以下几点:

  • 转换函数必须是类方法
  • 转换函数不能指定返回类型
  • 转换函数不能有参数

例如,转换为double类型的函数的原型如下所示:

operator double();

typeName(此处为double)指出了要转换成的类型,因此不需要指定返回类型。转换函数是类方法意味着:它需要类对象来调用,从而告知函数要转换的值。因此,函数不需要参数。

接下来,我们完善下Stonewt类,
类声明如下:

//stonewt1.hpp
#ifndef _STONEWT1_HPP_
#define _STONEW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值