知识点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.基本数据类型转换为类类型)【非重点】相关推荐

  1. 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass...

    环境: VS2008+Win7 64bit 代码: public string Execute(WebBrowser browser, HtmlElement btn) { bool loadFini ...

  2. html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...

    if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a="test"; if(a){ alert("yes" ...

  3. C++ 类和对象(二):构造函数、析构函数、拷贝构造函数、运算符重载

    构造函数 析构函数 拷贝构造函数 运算符重载 class Date {}; 可以看到,上面那个类没有任何成员,是一个空类,但是它真的什么都没有吗?其实一个类在我们不写的情况下,都会生成6个默认的成员函 ...

  4. C++运算符重载(类内、外重载)

    1.概念   运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数).   用函数的 ...

  5. C++:运算符重载与类的赋值运算符重载函数

    目录 章节知识架构 一.运算符重载 1. 运算符重载的基本概念 代码段1 2.关于运算符重载的重要语法细则 二.运算符重载在类中的使用 三.类的默认成员函数:=重载函数(赋值运算符重载) 1.自定义= ...

  6. C++实现日期类(运算符重载)

    日期类的实现 经历前期C语言的学习,C语言的编程思路是面向过程的编程,将所需要实现的功能封装为每一个功能函数,在主函数中进行调用 C++编程思想是面向对象的编程,相比较于C语言的编程,它更具有更高的安 ...

  7. 4-1 复数类的运算符重载

    4-1 复数类的运算符重载 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目的练习 ...

  8. C++实现CMatrix类的构造、实现及运算符重载

    C++实现CMatrix类的构造.实现及运算符重载 前言 一.CMatrix类的实现代码 CMatrix.cpp CMatrix.h main.cpp 二.运行截图 三.总结 构造函数 析构函数 运算 ...

  9. C++运算符重载详解

    目录 什么是运算符重载 运算符重载的意义 运算符重载的语法格式 简单例子 "+"运算符的重载 代码分析 运算符重载的两种方式 1,重载为类的成员函数 (1),双目运算符 (2),单 ...

最新文章

  1. Leangoo英文版来了~
  2. C#线程 ---- 线程同步详解
  3. 服务器主机启动不显示,服务器主机不启动怎么回事
  4. php页面的特点_带你认识PHP的四大特性八大优势
  5. 26. Postpone variable definitions as long as possible
  6. 【计算机组成原理】计算机系统概述 —— 计算机硬件组成与性能指标
  7. 设计模式学习(四)工厂模式
  8. python判断题题库大数据技术_智慧树_大数据分析的python基础_判断题答案
  9. Python手游辅助教程之战双帕弥什脚本教程
  10. 提高计算机水平的小技巧,提高创新能力的20个技巧
  11. php++内购续期订阅,iOS内购:自动续期订阅总结
  12. 【北京】No317| 在京在读研究生,可静可动,乐观,脾气好,很佛系的女孩,喜欢运动,旅游,读书,小吃货一枚,谈恋爱比较粘人...
  13. Pagedown learning notes
  14. C# Xamarin For Android移动开发项目实战篇
  15. 【Hyper-V】Windows10家庭版安装Hyper-V虚拟机
  16. 2023最新版easyrecovery数据恢复软件免费版测评
  17. Latex写论文时图片脚注的fig后冒号如何改为句号
  18. MySQL参数binlog-do-db对binlogs写入的影响
  19. The cycles per degree
  20. 智能投影:坚果、当贝前攻后防

热门文章

  1. 非上市中小企业股权激励若干问题的探析
  2. pygame基础 学习笔记 (03-显示文字)
  3. 【网安】工具篇:CE修改器详细使用指南(必看)
  4. npm install淘宝镜像
  5. 解决:Python的os.popen()在read()时,出现“�Ҳ����ļ�乱码及结果错误”的问题
  6. 玩转wireshark系列——抓取ARP、IP、UDP、FTP包【转】
  7. 推荐一套国外超棒的计算机科学视频课程(不是广告)
  8. 6126. 设计食物评分系统
  9. 高手才知道!七个你所不知道的 D3.js 秘技
  10. java 字符串用法_Java中的字符串用法小结