//输入输出运算符只能用友元函数重载
#include <iostream>
#include <assert.h>
#include <string.h>

using namespace std;

class Complex
{
    double re,im;
public:
    Complex(double r,double i):re(r),im(i)
    {

}
    Complex()
    {
        re = 0;
        im = 0;
    }
    Complex operator!();
    Complex operator+(const Complex &obj);
    //重载输入输出运算符,只能用友元函数
    friend ostream &operator<<(ostream &os,const Complex &c);
    friend istream &operator>>(istream &is,Complex &c);
};

Complex Complex::operator +(const Complex &obj)
{
    Complex temp;
    temp.re = re + obj.re;
    temp.im = im + obj.im;
    return temp;
}

Complex Complex::operator !()
{
    Complex temp;
    temp.re = -re;
    temp.im = -im;
    return temp;
}

ostream & operator<<(ostream &os,const Complex &c)
{
    os << c.re;
    if(c.im > 0)
        os << "+" << c.im << "i" << endl;
    else
        os << c.im << "i" << endl;
    return os;
}

istream & operator>>(istream &is,Complex &c)
{
    is >> c.re >> c.im;
    return is;
}

int main(int argc,char *argv[])
{
    Complex obj1(1,2),obj2(3,4);
    Complex obj3 = obj1 + !obj2;
    cout << obj3;
    cin >> obj3;
    cout << obj3;
    return 0;
}

C++输入输出运算符重载(“”“”)相关推荐

  1. 运算符重载(加减运算符、前置加加(减减)后置加加(减减)运算符、赋值运算符、输入输出运算符、关系运算符、函数调用)

    编译器对于一个类会默认生成以几种函数: 1.默认构造函数(空形参,空函数体) 2.默认拷贝构造函数(浅拷贝,也叫值拷贝.字节拷贝) 3.析构函数(空形参,空函数体.析构函数要求形参列表必须是空的,所以 ...

  2. C++中的运算符重载

    1.Cpp中的重载运算符和重载函数 C++允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载.重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但 ...

  3. 【C++学习笔记四】运算符重载

    当调用一个重载函数和重载运算符时,编译器通过把您所使用的参数类型和定义中的参数类型相比较,巨鼎选用最合适的定义.(重载决策) 重载运算符时带有特殊名称的函数,函数名是由关键字operator和其后要重 ...

  4. C++运算符重载中有些方法为什么需要定义为友元函数

    C++提供运算符重载主要目的: 希望对象之间的运算看起来可以和编译器内置类型一样丝滑: 相当于是告知编译器,类对象之间运算应该如何去做处理. 通过实现一个复数类,来阐述本文章的主题: class Co ...

  5. # c++运算符重载之 前置++, 后置++, 负号运算符, 类型转换函数, 以及输入输出运算符...

    c++运算符重载之 前置++, 后置++, 负号运算符, 类型转换函数, 以及输入输出运算符 标签(空格分隔): c++ 前言 我在c++学习的过程中, 对这几个不太常见的运算符重载不太会写.出现了很 ...

  6. 定义分数类中和运算符重载,实现分数的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。

    /* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作    者:李德彪 *完成时间:2016年6月15日 * ...

  7. 运算符重载例子分数加减乘除,赋值,输入输出比较大小

    把老师代码上传一下,方便用移动设备时刻查看 //有理数类的运算符重载 #include <iostream> using namespace std; class Rational{pri ...

  8. 第十三周项目一-分数类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...

  9. 第十二周项目二-Time类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...

最新文章

  1. Python的语言特点
  2. 前端智能化的加速时刻:华为机器视觉的创新方程式
  3. poj1220:高精度进制转换模板题
  4. python读取excel-Python读取Excel表格
  5. vu项目中按F5刷新element菜单没有根据路由匹配菜单解决办法
  6. 米莱狄机器人怎么那么多_王者荣耀排位遇到米莱狄太恶心?三大短板可以轻松克制!...
  7. 关于错误error C4430 error C2365 error C2078 error C2440 error C2143的处理。
  8. 【最大流】牛棚安排(jzoj 1259)
  9. python学习笔记之hashlib
  10. Spring IOC基础使用
  11. 在线教你图像分辨率怎么调整?
  12. PS 制作ICO图标和图片背景透明化
  13. C#爬虫,让你不再觉得神秘
  14. 虚拟机几种联网的方式,如何共享主机IP
  15. 精度与比例尺之间的关系
  16. math_角函数反三角函数诱导公式三角/反三角恒等式
  17. How To Install GLPI 9.5 On CentOS7
  18. iOS 语音合成支持后台和锁屏情况
  19. 室内空气流动原理图_新风系统工作原理图—新风系统工作原理介绍
  20. 1.7 信息化发展与应用

热门文章

  1. oracle row 00033,00033-ContentProvider实现数据共享[总结]
  2. SpringMVC学习06之SSM整合(一)
  3. jstat 内存泄漏_基于Java内存dump文件分析解决内存泄漏问题
  4. 通过webpack配置vue项目页面title
  5. 【c++】4.std::shared_ptr、std::make_shared、 .get() 、.data()、void *p 的用法、裸指针
  6. faster rcnn源码解读(四)之数据类型imdb.py和pascal_voc.py(主要是imdb和roidb数据类型的解说)
  7. 2021MIT博士pluskid年终总结
  8. 利用模拟退火提高Kmeans的聚类精度
  9. Effective Java读书笔记七:泛型(部分章节需要重读)
  10. 实时SLAM的未来及与深度学习的比较The Future of Real-Time SLAM and “Deep Learning vs SLAM”