问题描述:
谭浩强c++书中运算符重载隐式转换关于以下两句话的问题
friend Complex operator+(Complex&, Complex&);
friend Complex operator+(const Complex&,const Complex &);
知识点:
1.隐式转换不会被用于非const的引用参数
2.二义性问题
3.为什么用友元函数
详情:
#include<iostream>
#include<iomanip>
using namespace std;
class Complex
{
public:
Complex(){ real = 0; imag = 0; }
Complex(float r){ real = r; imag = 0; }//转换构造函数
Complex(float r, float i) :real(r), imag(i){}
friend Complex operator+(Complex&, Complex&);//没有二义性
operator double() const { return real; } //转换操作符,必须为成员函数,形参列表为空,,一般不应该改变被转换的对象,通常定义为