运算符重载(4.基本数据类型转换为类类型)【非重点】
知识点1.基本数据类型转换为类类型的两种方式
1.通过构造函数进行转换
例题:如下列代码通过用构造函数的方式,将一个double的数据变成一个crmb类
#include <iostream>
using namespace std;
class crmb
{private:int yuan;int jiao;int fen;
public:crmb(int y=0,int j=0,int f=0);crmb(double);crmb(const crmb & );void print();
};
crmb::crmb(int y,int j,int f):yuan(y),jiao(j),fen(f){}crmb::crmb(double money)
{int ntem=money*100;yuan=ntem/100;jiao=(ntem%100)/10;fen=ntem%10;
}
crmb::crmb(const crmb & m)
{yuan=m.yuan;jiao=m.jiao;fen=m.fen;
}
void crmb::print()
{cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
}
int main()
{crmb r;r=1.25;r.print();//调用crmb(double)将double类型的r转换成crmb类型的一个对象return 0;
}
运行结果:
2.通过转换函数进行转换(不会考,了解即可)
类内声明:operator T();
类外定义:X::operator T(){return T类型的对象;}
功能:将类型X的对象转化为T类型的对象
注意:
1.X必须是类类型(自定义类型),T既可以为基本数据类型,也可以为类类型(自定义类型)
2.该函数是没有擦参数,没有返回类型,但是有返回值,返回T类型的对象
3.该函数只能是成员函数,不能是友元函数
例题:如下列代码通过用转换函数的方式,将上个例题中由double转换的crmb类再转换为double类
#include <iostream>
using namespace std;
class crmb
{private:int yuan;int jiao;int fen;
public:crmb(int y=0,int j=0,int f=0);crmb(double);crmb(const crmb & );void print();operator double();
};
crmb::crmb(int y,int j,int f):yuan(y),jiao(j),fen(f){}crmb::crmb(double money)
{int ntem=money*100;yuan=ntem/100;jiao=(ntem%100)/10;fen=ntem%10;
}
crmb::crmb(const crmb & m)
{yuan=m.yuan;jiao=m.jiao;fen=m.fen;
}
void crmb::print()
{cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl;
}
crmb::operator double()
{return yuan+jiao/10.0+fen/100.0;
}
int main()
{crmb r;r=1.25;r.print();//调用crmb(double)将double类型的r转换成crmb类型的一个对象double r2;r2=r;//调用 operator double();将crmb类型的r转化为double类型的一个对象cout<<r2<<endl;return 0;
}
结果演示:
运算符重载(4.基本数据类型转换为类类型)【非重点】相关推荐
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass...
环境: VS2008+Win7 64bit 代码: public string Execute(WebBrowser browser, HtmlElement btn) { bool loadFini ...
- html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...
if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a="test"; if(a){ alert("yes" ...
- C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载
构造函数 析构函数 拷贝构造函数 运算符重载 class Date {}; 可以看到,上面那个类没有任何成员,是一个空类,但是它真的什么都没有吗?其实一个类在我们不写的情况下,都会生成6个默认的成员函 ...
- C++运算符重载(类内、外重载)
1.概念 运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 用函数的 ...
- C++:运算符重载与类的赋值运算符重载函数
目录 章节知识架构 一.运算符重载 1. 运算符重载的基本概念 代码段1 2.关于运算符重载的重要语法细则 二.运算符重载在类中的使用 三.类的默认成员函数:=重载函数(赋值运算符重载) 1.自定义= ...
- C++实现日期类(运算符重载)
日期类的实现 经历前期C语言的学习,C语言的编程思路是面向过程的编程,将所需要实现的功能封装为每一个功能函数,在主函数中进行调用 C++编程思想是面向对象的编程,相比较于C语言的编程,它更具有更高的安 ...
- 4-1 复数类的运算符重载
4-1 复数类的运算符重载 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目的练习 ...
- C++实现CMatrix类的构造、实现及运算符重载
C++实现CMatrix类的构造.实现及运算符重载 前言 一.CMatrix类的实现代码 CMatrix.cpp CMatrix.h main.cpp 二.运行截图 三.总结 构造函数 析构函数 运算 ...
- C++运算符重载详解
目录 什么是运算符重载 运算符重载的意义 运算符重载的语法格式 简单例子 "+"运算符的重载 代码分析 运算符重载的两种方式 1,重载为类的成员函数 (1),双目运算符 (2),单 ...
最新文章
- Leangoo英文版来了~
- C#线程 ---- 线程同步详解
- 服务器主机启动不显示,服务器主机不启动怎么回事
- php页面的特点_带你认识PHP的四大特性八大优势
- 26. Postpone variable definitions as long as possible
- 【计算机组成原理】计算机系统概述 —— 计算机硬件组成与性能指标
- 设计模式学习(四)工厂模式
- python判断题题库大数据技术_智慧树_大数据分析的python基础_判断题答案
- Python手游辅助教程之战双帕弥什脚本教程
- 提高计算机水平的小技巧,提高创新能力的20个技巧
- php++内购续期订阅,iOS内购:自动续期订阅总结
- 【北京】No317| 在京在读研究生,可静可动,乐观,脾气好,很佛系的女孩,喜欢运动,旅游,读书,小吃货一枚,谈恋爱比较粘人...
- Pagedown learning notes
- C# Xamarin For Android移动开发项目实战篇
- 【Hyper-V】Windows10家庭版安装Hyper-V虚拟机
- 2023最新版easyrecovery数据恢复软件免费版测评
- Latex写论文时图片脚注的fig后冒号如何改为句号
- MySQL参数binlog-do-db对binlogs写入的影响
- The cycles per degree
- 智能投影:坚果、当贝前攻后防
热门文章
- 非上市中小企业股权激励若干问题的探析
- pygame基础 学习笔记 (03-显示文字)
- 【网安】工具篇:CE修改器详细使用指南(必看)
- npm install淘宝镜像
- 解决:Python的os.popen()在read()时,出现“�Ҳ����ļ�乱码及结果错误”的问题
- 玩转wireshark系列——抓取ARP、IP、UDP、FTP包【转】
- 推荐一套国外超棒的计算机科学视频课程(不是广告)
- 6126. 设计食物评分系统
- 高手才知道!七个你所不知道的 D3.js 秘技
- java 字符串用法_Java中的字符串用法小结