转换构造函数:

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

 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前面没有参数。

最新文章

  1. nodejs 批量修改、删除
  2. 【POJ1185】炮兵阵地 状压DP
  3. qt creator 使用Ui文件的问题
  4. Linux Shell多命令执行
  5. 判断CAD版本
  6. nopcommerce3.3简洁版
  7. lua环境安装 转
  8. 25款漂亮的 WordPress 杂志主题
  9. UC编程之线程
  10. Java设计模式10:设计模式之 值对象
  11. pat 1006 Sign In and Sign Out (25)
  12. java-字符串学习总结
  13. 《Android开发艺术探索》读书笔记 (4) 第4章 View的工作原理
  14. iOS学习笔记(十五)——数据库操作(SQLite)
  15. Windows资源
  16. C#操作符??,?,?:功能解析
  17. python3 调用 Linux 脚本
  18. selenium 无法启动IE
  19. SPOJTLE - Time Limit Exceeded(高维前缀和)
  20. uigetfile的用法(批量读取图片)

热门文章

  1. C#获取文本文件的编码,自动区分GB2312和UTF8
  2. javascript_core_01之数据类型与运算
  3. jquerymobile仿微信 - 01
  4. Java-set集合
  5. 关于Thread.currentThread()和this的差异
  6. 开发工程师面试的秘密( 整理自 Export C Programming )
  7. 快速入门系列--MVC--02路由
  8. 为大家分享一个 Ajax Loading —— spin.js
  9. Linux演示 dd测试IO
  10. SQL Server安全(3/11):主体和安全对象(Principals and Securables)