c+-C++运算符重载问题友元函数

问题描述

C++运算符重载问题友元函数
#include#includeusing namespace std;class Complex{ public: Complex(double newx=0.0 double newy=0.0 ); //Complex(); Complex(Complex &c); double getx() const; double gety() const; Complex Add(const Complex &another); void Output(); friend istream & operator>>(istream &in const Complex &c); friend ostream & operator<<(ostream &out const Complex &c); Complex operator+(const Complex &c2)const; ~Complex(){}; private: double xy;};Complex::Complex(double newx double newy){ x=newx; y=newy;}/*Complex::Complex(){ x=0; y=0;}*/Complex::Complex(Complex &c){ x=c.x; y=c.y;}double Complex::getx()const{ return x;}double Complex::gety()const{ return y;}Complex Complex::Add(const Complex &another){ Complex r; r.x=x+another.getx(); r.y=y+another.gety(); return r;}void Complex::Output(){ cout<=0) cout<<""+""; cout<>(istream &in const Complex &c){// in>>""("">>c.x>>""<>c.x; in>>c.y; return in;}ostream & operator<<(ostream &out const Complex &c){ out<<""(""<>z1; cin>>z2; z4=z1.Add(z2); z4.Output(); z3 = z1+z2; z3.Output(); return 0;}

运行不起来

解决方案

http://wenku.baidu.com/link?url=Db37m1kTCFjN5wDmcU_ZMcT4YuEQTy-cUtdsiAdSuALaPdpwK-YYUEDTdbBCKPwKZgpYFtTNmQRdf0zXk1Qw1KmtPk71_q5EKG2M3EEGgB3

解决方案二:
c++中运算符重载遇到的问题
c++运算符重载和友元函数
C++友元函数以及运算符重载

时间: 2024-08-01 17:25:42

c+-C++运算符重载问题友元函数的相关文章

C++运算符重载问题友元函数

问题描述 C++运算符重载问题友元函数 #include#includeusing namespace std;class Complex{ public: Complex(double newx=0.0, double newy=0.0 ); //Complex(); Complex(Complex &c); double getx() const; double gety() const; Complex Add(const Complex &another); void Output

解析C++中不能重载为友元函数的四个运算符

以下是对C++中不能重载为友元函数的四个运算符进行了详细的分析介绍,需要的朋友可以过来参考下   C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢? 现在先说说赋值运算符"="的重载 C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数. 不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符

解析C++中不能重载为友元函数的四个运算符_C 语言

C++规定有四个运算符 =, ->, [], ()不可以是全局域中的重载(即不能重载为友员函数),这是为什么呢?现在先说说赋值运算符"="的重载C++规定赋值运算符"="只能重载为类的非静态成员函数,而不可以重载为类的友元函数.不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象的,它只能去操作类静态数据成员.而赋值运算符"="是基于对象操作的.那么为什么赋值运算符不可以重载为类的友元函数?像同样都是双目

c++运算符重载为非成员函数问题

问题描述 c++运算符重载为非成员函数问题 用vc6.0写复数类,使运算符重载为非成员函数,组建时出现fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 1794) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for m

第8周-任务1-方案2-复数类中运算符重载(非成员函数实现)

接:第8周-任务1-方案1-复数类中运算符重载(成员函数实现) 本文用方案二求解:用类的友元函数,而不是成员函数,完成上面提及的运算符的重载: [讲解视频] [参考解答] #include <iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} friend Complex operator+(Comp

C02-程序设计基础提高班(C++)第11周上机任务-运算符重载

第11周:阅读教材第10章(p314-346),掌握用运算符重载解决问题,完成第11周上机任务: (回到C02-程序设计基础提高班(C++)学习安排) [任务1]实现复数类中的运算符重载定义一个复数类重载运算符+.-.*./,使之能用于复数的加减乘除.(1)方案一:请用类的成员函数完成运算符的重载: class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Comple

玩转C++运算符重载

运算符重载语法:返回值类型  operator运算符(参数列表) {  代码逻辑... } C++中的运算符重载是通过函数来实现的,可以将重载的运算符看作是类成的一个成员函数,向普通函数一样调用.如重载String类的 + 运算符,调用的时候可以这样: class { // ..... String operator+(const String &str) { .... } } String str1 = "hello "; String str2 = "cplusp

(一二二)友元函数

由于C++控制了对类对象的访问(例如不允许访问私有成员).于是,通常公有类方法(例如:成员函数)提供唯一的访问途径.   这样保护了私有成员,但同时又因为这种限制太严格,以致于不适合特定的编程问题.   在这种情况下,C++提供了另外一种形式的访问权限:友元.     友元有三种: ①友元函数: ②友元类: ③友元成员函数.       通过让函数成为类的友元,可以赋予该函数与类的成员函数具有相同的访问权限(例如可以访问.修改私有成员).   为什么需要友元函数: 以类成员函数为例: Skill

运算符重载

运算符重载 运算符重载的实质是函数重载.+=是一个运算符,可重载. 函数调用运算符  ()比较特殊,通过它可以把对象当函数用~ 重载为类的友元函数. 重载为类的成员函数. 此时,函数的参数个数将比原来的操作数少一个,因为对象本身充当了最左边的操作数. 前置单目运算符重载为成员函数时,形参为空. 后置单目运算符重载为成员函数时,形参为一个int参数. 重载赋值运算符 返回值是不是引用类型不影响连续赋值,但影响拷贝构造函数的调用次数.见图: 用引用:     不用引用:   重载=运算符要注意自我赋