运算符重载时友元问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 01:51:55
// hgcdhk.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include<iostream>
using namespace std;
class P
{
public:
double real;
double imaginary;
P(double real,double imaginary){}
const P operator*();
friend const P operator/(P c1,P c2);
};
const P
operator*(P c1,P c2)
{
cout<<c1.real*c2.real-c1.imaginary*c2.imaginary<<"+"<<c1.real*c2.imaginary+c1.imaginary*c2.real<<"i"<<endl;
return P (c1.real*c2.real-c1.imaginary*c2.imaginary,c1.real*c2.imaginary+c1.imaginary*c2.real);
}
const P
operator/(P c1,P c2)
{
cout<<(c1.real*c2.real+c1.imaginary*c2.imaginary)/(c2.real*c2.real+c2.imaginary*c2.imaginary)<<"+"<<(c1.imaginary*c2.real-c1.real*c2.imaginary)/(c2.real*c2.real+c2.imaginary*c2.imaginary)<<"i"<<endl;

/可以不用友元
比如const P operator/(P c1); //声明类的成员函数
/是二元操作符

*也可以用友元
比如friend const P operator*(P c1); 或
friend const P operator*(P c1,p c2);
因为*既可以作一元操作符也可以做二元操作符

有不明白的hi我