这一块知识点在学习C++时没有深入了解,在查看opencv基本数据结构定义的源码中看到了,记录一下该知识点。
转换构造函数:预定义类型转换成类类型
一般形式
class C {
public:
double real;
double imag;
C() {}
C(double i, double r) { real = i; imag = r; }
C(double r) {
real = r; imag = 0;
}//转换构造函数
C operator +(C &c1)
{
C tem;
tem.real = c1.real + this->real;
tem.imag = c1.imag + this->imag;
return tem;
}
/*friend C operator +(C &c1, C&c2)
{
C tem;
tem.real = c1.real + c2.real;
tem.imag = c1.imag + c2.imag;
return tem;
}*/
};
int main()
{
C c1(1.1, 2.2);
C c2;
C c3;
//不同调用转换构造函数的方式
c2= C(2.3) + c1;//C(2.3)调用转换构造函数
c3 = 4;//调用转换构造函数
// C trans(int a)
// { return a}
// 该方式也调用转换构造函数 int->C
//b = a + C(2.3);//出错,将+重载函数要为friend
cout |