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;
}
输出: