• 不同类型数据间的转换


            对于标准数据类型的转换,编译系统会给出说明,会让我们知道是怎样进行转换。而对用户自己声明的类型,编译系统并不知道怎样进行类型转换,解决这个问题的关键是让编译系统知道怎样去进行转换,这就需要定义一些专门的函数类处理。

    1、转换构造函数

        转换构造函数的作用是将一个其他类型的数据转换成一个类的对象,这里我们以复数类Complex为例,我们来介绍一下,转换构造函数。

    转换构造函数是构造函数的重载,它只有一个形参,例:

    1. Complex (double r)
    2. {
    3. _real = r;
    4. _imaginary = 0;
    5. }

            其作用是将double类型的参数r转换成Complex类的对象,将r作为复数的实部,虚部为0。用户可以自己根据需要定义转换构造函数,在函数体中告诉编译系统怎样去进行转换。在类体中,可以有构造函数,也可以没有转换构造函数,根据情况而定,假如在Complex类中定义了上面的转换构造函数,在Complex类的作用域中有以下声明语句:

    Complex c (2.8)         // 初始化对象c,有一个参数,就会调用转换构造函数

            初始化对象c,实部为2.8,虚部为零。他的作用就是将double类型的常数转换为一个名为c的Complex类对象。

    如果已经对+运算符进行了重载,使之能进行两个Complex类对象的相加则:

    1. c1 = c + 1.4; //错误,不能让一个Complex类对象与浮点数相加
    2. c2 = c + Complex (1.4); //正确,转换构造函数把1.4转为Complex类的对象

            不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数所在的类的对象。

    2、类型转换函数

            类型转换函数的作用是将一个类对象转换成另一类型的数据。假设已经声明了复数类Complex,则可以这样定义类型转换函数:

    1. operator double()
    2. {
    3. return _real;
    4. }

            函数返回double型变量_real的值。它的作用是将一个Complex类的对象转换成一个double类型的数据,其返回值是Complex类中数据成员_real的值。

            注意,这个函数不能指定类型,没有参数,operator double是函数名,这回运算符重载是一样的。类型转换函数一般的写法是:

    operator 类型名()

    {实现转换的语句}

  • 相关阅读:
    PDF处理控件Aspose.PDF功能演示:使用C#查找和替换PDF文件中的文本
    MQ收到无序的消息时如何进行业务处理
    大数据在智慧城市的建设中起到了哪些作用?_光点科技
    ASP.Core3.1 WebAPI 发布到IIS
    1.BERT
    变电站自动化系统中的安全措施分析及应用-安科瑞
    opencv 基础(持续更新中)
    sqrt函数的实现
    AI如何帮助Salesforce从业者找工作?
    易点易动固定资产管理系统:定制流程与用量控制的高效管理利器
  • 原文地址:https://blog.csdn.net/Grey_Pigeon/article/details/126317555