C++学习笔记:转换构造函数与类型转换函数

C++类中包含集中构造函数。

1.默认构造函数。

Complex();   (以复数为例。)

2.用于初始化的构造函数。

Complex(int i,int j);

3.用于复制对象的复制构造函数。

Complex(Complex &c)

4.转换构造函数。

Complex(double r)

{real=r,imag=0;}


转换构造函数就是把传入的其他类型参数转换成类的对象。


以上转换构造函数的作用是将double型的r转换成Complex类的对象,将r作为复数的实部,0作为虚部(当然也可以定义为其他数值)。


毫无疑问,转换构造函数也是构造函数重载的一种,但是转换构造函数只能有一个参数,如果有多个参数就不是转换构造函数。原因:如果有多个参数,无法确认把哪一个参数

转换成构造函数。

#include <iostream>
using namespace std;

class Complex
{
public:
    Complex()		//默认构造函数
    {
        real = 0;
        imag = 0;
        cout << "调用默认构造函数" << endl;
    }
    Complex(double r,double i):real(r),imag(i)	      //有参数的初始化构造函数,并用初始化表进行初始化
    {
        cout << "调用有参数的初始化构造函数" << endl;
    }
    Complex(double i)					              //转换构造函数,对传入的参数进行转换成对象
    {
        real = i;
        imag = 0;
        cout << "调用转换构造函数" << endl;
    }
    void Display()
    {
        cout << real << "+" << imag << "i" << endl;
    }
private:
    double real;
    double imag;
};
int main()
{
    Complex C1;
    C1.Display();
    Complex C2(2,2);
    C2.Display();
    Complex C3(1.2);
    C3.Display();
    return 0;
}

输出:



类型转换函数


类型转换函数顾名思义就是转换一个数据的类型,简单的就是(int)(a) 可以将double类型的a转换成int型的。在这里讨论的是将一个类的对象转换成其他数据类型。

C++提供了类型转换函数,就是将一个类的对象转换成另一类型的数据。

operator 类型名()

{实现转换的语句}


类型转换函数在函数名前不能指定函数类型,也没有参数。返回类型是类型名决定的,只能作为成员函数,因为转换的类型是本类的对象,不能作为友元函数或者普通函数。


#include <iostream>
using namespace std;

class Complex
{
public:
    Complex(double r,double i):real(r),imag(i){}
    operator double()
    {
        cout << "调用类型转换函数" << endl;
        return real;
    }
private:
    double real;
    double imag;
};

int main()
{
    Complex C(1,2);
    double a=3.3;
    cout << C+a;
    return 0;
}

输出:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值