类型转换
类型转换是将一种类型的值映射为另一种类型的值。类型转换实际上包含有自动隐含和强制的两种。
类型的自动隐式转换
C++语言编译系统提供的内部数据类型的自动隐式转换规则如下:
1. 程序在执行算术运算时,低类型可以转换为高类型。
2. 在赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给它。
3. 当在函数调用时,将实参值赋给形参,系统隐式地将实参转换为形参的类型后,赋给形参。
4. 函数有值时,系统将自动地将表达式类型转换为函数类型后,赋值给调用函数。
在以上情况下,系统会进行隐式转换的。当在程序中发现两个数据类型不相容时,又不能自动完成隐式转换,则将出现编译错误。例如:
int * p = 100;
在这种情况下,编译程序将报错,为了消除错误,可以进行如下所示的强制类型转换:
int * p = (int *)100;
将整型数100显式地转换成指针类型。
构造函数具有类型转换功能
在实际应用中,当类定义中提供了单个参数的构造函数时,该类便提供了一种将其他数据类型的数值或变量转换为用户所定义数据类型的方法。因此,可以说单个参数的构造函数提供了数据转换的功能。下面通过一个例子进一步说明单参数构造函数的类型转换功能。
#include
class A
{
public:
A() { m=0; }
A(double i) { m=i; }
void print() { cout<
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
数据类型转换,将整型数值10转换成double型,然后,再通过类中定义的单参数构造函数将double型数值转换为A类类型,最后把它赋值给a。这些转换都是自动隐式完成的。
转换函数
转换函数又称类型强制转换成员函数,它是类中的一个非静态成员函数。它的定义格式如下:
class <类型说明符1>
{
public:
operator <类型说明符2>();
…
}
这个转换函数定义了由<类型说明符1>到<类型说明符2>之间的映射关系。可见,转换函数是用来将一种类型的数据转换成为另一种类型。下面通过一个例子说明转换函数的功能。
#include
class Rational
{
public:
Rational(int d, int n)
{
den = d;
num = n;
}
operator double(); //类型转换函数
private:
int den, num;
};
Rational::operator double()
{
return double(den)/double(num);
}
void main()
{
Rational r(5, 8);
double d = 4.7;
d+=r;
cout<
本文档为【类型转换】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。