类型转换构造函数隐式调用与运算符重载参数类型的不对应
来源:互联网 发布:esp8266的单片机教程 编辑:程序博客网 时间:2024/05/17 07:48
在自定义类Complex中定义了类型转换构造函数,同时,定义了以Complex类对象的引用为形参的运算符+重载的友元函数,在执行类型隐式转换时出错。
错误代码如下:
#include <iostream>using namespace std;class Complex{public:Complex(){real=0;imag=0;} //默认构造函数,没有形参Complex(double r){real=r;imag=0;} //定义转换构造函数,一个形参Complex(double r,double i){real=r;imag=i;} //初始化构造函数,两个形参 friend Complex operator+(Complex &c1,Complex &c2); //运算符重载的友元函数 void display();private: double real;double imag;};Complex operator+(Complex &c1,Complex &c2) //定义运算符+重载的函数{return Complex(c1.real+c2.real,c1.imag+c2.imag);}void Complex::display() //定义输出函数{cout<<"("<<real<<"+"<<imag<<"i)"<<endl;}int main(){ Complex c1(3,4),c2(5,-10),c3; c3=c1+2.5;c3.display(); return 0;}
其实是类型对应发生了错误。
修改方法一:只需把
friend Complex operator+(Complex &c1,Complex &c2); //运算符重载的友元函数
这两句代码中的引用符号“&”删去即可。
修改方法二:
显式调用转换函数:
c3=c1+Complex(2.5);
参考:http://bbs.bccn.net/thread-350819-1-1.html
0 0
- 类型转换构造函数隐式调用与运算符重载参数类型的不对应
- 转换构造函数与类型转换运算符重载
- 函数调用运算符与重载、类型转换
- 重载<<运算符,以及隐式的类型转换函数
- 复制构造函数、重载赋值运算符、类型转换小结
- C++ 转换类型运算符 调用构造函数实现的类型转换
- Operator运算符重载与Implicit隐式类型转换
- Operator运算符重载与Implicit隐式类型转换
- C++ Pirmer : 第十四章 : 重载运算符与类型转换之函数调用运算符与标准库的定义的函数对象
- C++重载之转换构造函数与类型转换函数
- 重载、类型转换与运算符
- 重载运算与类型转换
- C++中类型转换与函数、运算符重载的问题(上)
- C++中类型转换与函数、运算符重载的问题(中)
- 特殊的运算符重载-----类型转换运算符重载
- 类型转换运算符重载
- 重载类型转换运算符
- (类型转换)运算符重载
- 安装Ubuntu16.04小结
- python的smtp邮件发送
- 二叉树的递归与非递归
- Git常用指令笔记
- ABAP 中JSON格式的转换与解析
- 类型转换构造函数隐式调用与运算符重载参数类型的不对应
- 漫谈程序员系列:程序员该不该考虑初创公司
- springMVC web工程之 HelloWorld
- [知识点滴]HTML5元素垂直居中那些事?
- java多线程(二)
- 商品展示案例的ShopShowDemo
- js 解决js for 循环中的闭包问题
- python之字典
- ZOJ-1091-Knight Moves