C++转换构造函数与类型转换构造函数
2018-06-17 23:58:44来源:未知 阅读 ()
转换构造函数:
转换构造函数的只有一个形参:
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.25 23 Press any key to continue 24 */
编译器系统发现有对float的重载,因此调用了这个函数;
注意:operator前面没有参数。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:qt5中信号和槽的新语法
下一篇:[面试编程题1]构造回文
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash