本文章是作者根据史蒂芬·普拉达所著的《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 _STONEWT1_HPP_
class Stonewt
{
private:
enum {Lbs_per_stn = 14};
int stone;
double pds_left;
double pounds;
public:
Stonewt(double lbs);
Stonewt(int stn, double lbs);

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

被折叠的 条评论
为什么被折叠?



