C++转换构造函数与类型转换构造函数

转换构造函数:

转换构造函数的只有一个形参:

 Student(float s)
{
score = s;
age = ;
}

如果已经在上面定义了构造函数:

 Student();        //建立对象c1,由于只有一个参数,调用转换构造函数

如果对“+”进行了重载,那么以下是编译错误的:

 stu2 = stu1 + ;        //这样编译错误
stu2 = stu1 + Student(); //合法,将85转换为Student类对象

注意:在已定义的相应的转换构造函数情况下, 将运算符“+”函数重载为友元函数,在进行两个复数相加时,可以用交换律;

   如果是重载为成员函数的话,那么交换律不适用;

类型转换构造函数:

用转换构造函数可以将一个类型数据转换成类的对象,但不能将一个类的对象转换成一个类型数据;因此我们需要另一种方法来实现这种功能:

C++提供了类型转换函数来解决这种问题:

 operator float()
{
return score;
}

下面是一个使用类型转换的简单例子:

 class Student
{
private:
float score;
int age;
public:
Student(void){age = ; score = ;}
Student(int a, float s){age = a; score = s;}
operator float(){return score;}
}; int main()
{
Student stu1(, ), stu2(, 97.5);
float f;
f = 6.75 + stu2; //当需要的时候,编译器会自动调用这些函数
cout << f << endl;
return ;
}
/*
运行结果:
104.25
Press any key to continue
*/

编译器系统发现有对float的重载,因此调用了这个函数;

注意:operator前面没有参数。

上一篇:windows下使用批处理文件调用python程序


下一篇:IntelliJ IDEA 13试用手记(附详细截图)