C/C++开发语言系列之16---C++不同类型数据间的转换
2012-11-16 16:41
483 查看
一、标准类型数据间的转换
C++还提供显式类型转换,程序人员在程序中指定将一种指定的数据转换成另一指定的类型,其形式为类型名(数据)
如
int(89.5)
其作用是将89.5转换为整型数89。
对于用户自己声明的类型,编译系统并不知道怎样进行转换。解决这个问题的关键是让编译系统知道怎样去进行这些转换,需要定义专门的函数来处理。
二、转换构造函数
转换构造函数(conversion constructor function) 的作用是将一个其他类型的数据转换成一个类的对象。这里回顾一下以前学习过的几种构造函数:默认构造函数。以Complex类为例,函数原型的形式为
Complex( ); //没有参数
用于初始化的构造函数。函数原型的形式为
Complex(double r,double i); //形参表列中一般有两个以上参数
用于复制对象的复制构造函数。函数原型的形式为
Complex (Complex &c); //形参是本类对象的引用
现在又要介绍一种新的构造函数——转换构造函数。
转换构造函数只有一个形参,如
Complex(double r) {real=r;imag=0;}
其作用是将double型的参数r转换成Complex类的对象,将r作为复数的实部,虚部为0。用户可以根据需要定义转换构造函数,在函数体中告诉编译系统怎样去进行转换。
在类体中,可以有转换构造函数,也可以没有转换构造函数,视需要而定。以上几种构造函数可以同时出现在同一个类中,它们是构造函数的重载。编译系统会根据建立对象时给出的实参的个数与类型选择形参与之匹配的构造函数。
使用转换构造函数将一个指定的数据转换为类对象的方法如下:
先声明一个类。
在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法。
在该类的作用域内可以用以下形式进行类型转换:
类名(指定类型的数据)
就可以将指定类型的数据转换为此类的对象。
不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数所在的类对象。如可以将一个学生类对象转换为教师类对象,可以在Teacher类中写出下面的转换构造函数:
Teacher(Student& s){num=s.num;strcpy(name,s.name);sex=s.sex;}
但应注意: 对象s中的num,name,sex必须是公用成员,否则不能被类外引用。
相关文章推荐
- C++语言基础 例程 不同类型数据间的转换
- C++中不同数据类型之间的相互转换
- 50. __bridge 桥接 不同语言间数据类型的转换
- C++不同数据类型的转换
- c/vc/c++不同数据类型之间的转换
- c/c++语言数据类型转换的方式及常见问题【绝笔整理】
- C/C++开发语言系列之7---C++基类与派生类的转换
- C++中不同类型数据之间的转换(调用库函数)
- C++程序员学Java系列之五:常量,变量,基本数据类型及转换
- Java JNI开发时常用数据类型与C++中数据类型转换
- C++中不同类型数据之间的转换(不调用库函数)
- C++ stringstream实现不同类型数据的转换
- Java语言基本数据类型、转换及其封装
- C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》
- c++中的几个转换数据类型的深度学习
- Java数据类型转换short s=1;s=s+1;与short s=1;s+=1;为什么不同
- C#语言学习--基础部分(十二) --堆,栈,装箱,拆箱,安全数据类型转换:as, is
- JAVA语言基础:数据类型的转换 数组的概念
- objective-c中不同数据类型之间的相互转换
- 如何在C++中方便的将float、int等类型数据转换成string类型,并利用ROS中的std_msg/String发布出去