首页 / 操作系统 / Linux / C++转换构造函数与类型转换构造函数
转换构造函数: 转换构造函数的只有一个形参:1 Student(float s)2 {3 score = s;4 age = 0;5 } 如果已经在上面定义了构造函数:1 Student(85);//建立对象c1,由于只有一个参数,调用转换构造函数如果对“+”进行了重载,那么以下是编译错误的:1 stu2 = stu1 + 85;//这样编译错误2 stu2 = stu1 + Student(85);//合法,将85转换为Student类对象注意:在已定义的相应的转换构造函数情况下, 将运算符“+”函数重载为友元函数,在进行两个复数相加时,可以用交换律; 如果是重载为成员函数的话,那么交换律不适用;类型转换构造函数:用转换构造函数可以将一个类型数据转换成类的对象,但不能将一个类的对象转换成一个类型数据;因此我们需要另一种方法来实现这种功能:C++提供了类型转换函数来解决这种问题:1 operator float()2 {3 return score;4 } 下面是一个使用类型转换的简单例子: 1 class Student 2 { 3 private: 4 float score; 5 int age; 6 public: 7 Student(void){age = 18;score = 0;} 8 Student(int a, float s){age = a; score = s;} 9 operator float(){return score;}10 };11 12 int main()13 {14 Student stu1(18,86), stu2(18, 97.5);15 float f;16 f = 6.75 + stu2;//当需要的时候,编译器会自动调用这些函数17 cout << f << endl;18 return 0;19 }20 /*21 运行结果:22 104.2523 Press any key to continue24 */ 编译器系统发现有对float的重载,因此调用了这个函数;注意:operator前面没有参数。本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133258.htm