本例子着重演示:类的自动转换和强制类型转换。
接收一个参数的构造函数将作为转换函数,即:可以转换普通的数据类型为对象类型
Stonewt incognito = 275 (这个就是转换275为Stonewt对象)
还可以将类对象转换为普通的数据类型,这需要借助转换函数来进行。
转换函数就是opertor typename() 例如:operator double() 这就是个转换函数,它是类的方法。
注:应该谨慎地使用隐士转换函数,最好是选择仅仅能显示调用的时候才会执行的函数。
因此这个玩意,大家看看就好了,最好是不要用啊。
本程序有三个文件。
#pragma once
#ifndef STONEWT_H_
#define STONEWT_H_
class Stonewt
{
public:
Stonewt(double lbs);//构造器,使用double 磅
Stonewt(int stn, double lbs);//构造器,使用英石和磅
Stonewt();//默认构造器
~Stonewt();
void show_lbs() const;//以磅的格式来显示重量
void show_stn() const;//以英石和磅的方式来显示重量
//转换函数
operator int() const;
operator double() const;
private:
enum {Lbs_per_stone=14};//一英石=14磅
int stone; //完整的英石
double pds_left; //零碎的磅
double pounds; //完全以磅为单位来计算重量
};
#endif
//stonewt.cpp --- Stonewt 方法
#include <iostream>
using std::cout;
#include "stonewt.h"
//构造器 ,用double值
Stonewt::

本篇博客详细介绍了C++中类的自动转换和强制类型转换,通过Stonewt类的实例展示了如何通过构造函数实现数据类型到对象的转换,以及如何定义转换函数如`operator double()`实现实例到原始数据类型的转换。作者警告应谨慎使用隐式转换函数,建议只在明确调用时使用。
最低0.47元/天 解锁文章
607

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



