关于单参构造函数和类型转换函数
2016-04-18 16:34
176 查看
其实单参构造函数就是只有一个参数的构造函数,拷贝构造函数就是他的一种,单参构造函数和类型转化函数用法正好相反,单参构造函数是把形参中的值或者是对象转化为本对象,而类型转化函数是把本对象转换为一个值或者一个其他对象
代码如下:
itoa是一个可以把int型数据转化为string型数据的函数。在#include<stdlib.h>头文件中
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
class RMB{
int yuan,jiao,fen;
public:
RMB(int y = 0,int j = 0,int f = 0)
{
float ff = (y*100.0+j*10.0+f)/100;
yuan = ff;
jiao = int(ff*10)%10;
fen = int(ff*100)%10;
}
RMB(float f){ //单参构造函数
yuan = f;
jiao = int(f*10)%10;
fen = int(f*100)%10;
}
operator float(){ //函数1
return (yuan*100.0+jiao*10.0+fen)/100;
}
operator string(){ //函数二
char buffer[20];
string str(itoa(yuan,buffer,10));
str+="元";
str+=itoa(jiao,buffer,10);
str+="角";
str+=itoa(fen,buffer,10);
str+="分";
return str;
}
};
int main()
{
RMB b1 = 32.456f;//A调用了单参构造函数 用一个float数值创建一个RMB对象
float f = b1;//B有一个隐式转化调用了转换函数一将对象转化为float再赋值
cout<<f<<endl;
cout<<string(b1)<<endl;//C调用了转化函数2 将对象转化为一个string再输出
RMB b2(12,8,8);//D调用第一个构造函数
cout<<b2<<endl;//E调用了转化函数1转化为一个float再输出
cout<<string(b2)<<endl;
}
代码如下:
itoa是一个可以把int型数据转化为string型数据的函数。在#include<stdlib.h>头文件中
#include<iostream>
#include<string>
#include<stdlib.h>
using namespace std;
class RMB{
int yuan,jiao,fen;
public:
RMB(int y = 0,int j = 0,int f = 0)
{
float ff = (y*100.0+j*10.0+f)/100;
yuan = ff;
jiao = int(ff*10)%10;
fen = int(ff*100)%10;
}
RMB(float f){ //单参构造函数
yuan = f;
jiao = int(f*10)%10;
fen = int(f*100)%10;
}
operator float(){ //函数1
return (yuan*100.0+jiao*10.0+fen)/100;
}
operator string(){ //函数二
char buffer[20];
string str(itoa(yuan,buffer,10));
str+="元";
str+=itoa(jiao,buffer,10);
str+="角";
str+=itoa(fen,buffer,10);
str+="分";
return str;
}
};
int main()
{
RMB b1 = 32.456f;//A调用了单参构造函数 用一个float数值创建一个RMB对象
float f = b1;//B有一个隐式转化调用了转换函数一将对象转化为float再赋值
cout<<f<<endl;
cout<<string(b1)<<endl;//C调用了转化函数2 将对象转化为一个string再输出
RMB b2(12,8,8);//D调用第一个构造函数
cout<<b2<<endl;//E调用了转化函数1转化为一个float再输出
cout<<string(b2)<<endl;
}
相关文章推荐
- Android Studio导入Project、Module的正确方法
- 算法(一)---字符串匹配算法
- android 进阶--使用adb命令行
- Spring4+Hibernate4整合
- python实现的html转xlsx,xlsx转html
- firefox插件-HackBar介绍与试用
- 关于adb logcat
- Java中类的排序
- EXTJS4.2中单选框及多选框
- 326. Power of Three
- C#动态操作DataTable(新增行、列、查询行、列等)
- 如何让oracle的select强制走索引
- 欢迎使用CSDN-markdown编辑器
- DenyHosts 防止SSH爆破
- PowerDesigner设计Name和Comment 替换
- 网络:HTTP 状态码
- 算法设计与分析之-最大子段和 (分治)
- NAT模式,主机ping不通虚拟机
- Caffe学习系列(4):激活层(Activiation Layers)及参数
- 裁剪图片