c++primer plus 第11章 编程题第7题

#pragma once
#ifndef COMPLEX0_H_
#define COMPLEX0_H_
#include<iostream>

class Complex
{
private:
    double real;
    double imgn;
public:
    Complex();
    Complex(double a, double b);
    ~Complex();
    Complex operator+(const Complex & a) const;
    Complex operator-(const Complex & a) const;
    Complex operator~();
    Complex operator*(double c);
    Complex operator*(const Complex & a) const;

    //friend
    friend Complex operator*(const double c, const Complex & a);
    friend std::ostream & operator<<(std::ostream & os, const Complex &a);//operator后面别打空格
    friend std::istream & operator>>(std::istream & os, Complex &a);//cin是在istream里

};

#endif // !COMPLEX0_H_

//总结,如果在第二个构造函数里写了double n =0, double b = 0;就不用写complex(),两个是等价的,会存在歧义
//所以尽量不要在构造函数参数里写 = 0;因为会产生歧义,老实用complex()和第二个构造函数就好
//凡是不用改变的都设成const---------------------------------
#include"complex0.h"

Complex::Complex()
{
    real = imgn = 0;
}

Complex::Complex(double n1, double n2)
{
    real = n1;
    imgn = n2;
}

Complex Complex::operator+(const Complex & a) const
{
    Complex temp;
    temp.real = real + a.real;
    temp.imgn = imgn + a.imgn;
    return temp;
    /*return Complex(real + a.real, imgn + a.imgn);*///直接调用构造函数//要习惯于用这个简化语句
    //一般就用最后一条语句,等价于前面三条,调用构造函数会产生一个临时对象,赋值给左边
}

Complex Complex::operator-(const Complex & a) const
{
    Complex temp;
    temp.real = real - a.real;
    temp.imgn = imgn - a.imgn;
    return temp;
}

Complex Complex::operator*(const Complex & a) const
{
    Complex temp;
    temp.real = real * a.real + imgn * a.imgn;
    temp.imgn = real * a.imgn + imgn * a.real;
    return temp;
}

Complex Complex::operator~()
{
    imgn = 0 - imgn;
    return *this;
}

Complex Complex::operator*(double c)
{
    return Complex(c * real, c * imgn);
}
//friend
Complex operator*(const double c, const Complex & a)//别打::因为友元不在类里面,虽然是在类里面声明
{
    return Complex(c * a.real, c * a.imgn);
}

std::ostream & operator<< (std::ostream & os, const Complex &a)
{
    os << "is " << "( " << a.real << ", " << a.imgn << "i )";
    return os;
}
std::istream & operator >> (std::istream & os, Complex & a)//cin在istream里
{
    std::cout << "real: ";
    os >> a.real;
    std::cout << "imaginary: ";
    os >> a.imgn;
    return os;

}
Complex::~Complex()
{

}

 

原文地址:https://www.cnblogs.com/syne-cllf/p/9240615.html

时间: 2024-08-29 17:34:34

c++primer plus 第11章 编程题第7题的相关文章

c++primer plus 第12章 编程题第1题

一开始的程序里 类不能连续赋值,内存会报错.debug了一整晚发现是new里面的数组n++出错.经过测试++n和n+1都能使程序正确运行. n++会报错是因为先使用n,再对n加1.而我们的期望是开辟一个n+1长度的数组而不是n,所以会报错. 在单语句中,自增运算和普通的加法没有区别,但是在这种复合语句中千万小心,尽量不使用n++和++n #pragma once #ifndef COW_H_ #define COW_H_ class Cow { private: //class default

c++primer plus 第13章 编程题第2题

#pragma once #ifndef CD_H_ #define CD_H_ //base class class Cd { private: char * performers; char * label; int selection; //number of selection double playtime; public: Cd(); Cd(const Cd & d); Cd(char * s1, char * s2, int n, double x); virtual ~Cd();

11章 编程练习题 11.8

兴趣使然,最近开始自学java,之前的题做了就删,怪可惜的. 自己一个人闷头写代码也不好,今天开始就把做好的题都贴出来求鞭策吧! 要求: 一个Account类储存账户 一个Transaction类储存交易信息 利用ArrayList储存每一条交易信息 最后输出账户清单,显示账户名字.利率.余额和所有交易. 总结: 要注意保存每次交易后的余额balance,调用类方法时该类是否要转换. 代码写完感觉自己的算法逻辑还不够好,经常需要转一次弯的地方自己要转几次弯才到. 搞定一道题,经验值又UP了www

c primer plus 第六章编程练习2

使用嵌套循环产生下列图案:$$$$$$$$$$$$$$$ #include<stdio.h> int main(void){ int i,j; for(i=0;i<5;i++){ for(j=0;j<=i;j++){ printf("$"); } printf("\n"); } return 0; }

离散数学第11章计算机课题第1题

问题: 给定无向简单图的相邻矩阵,确定这个图是不是树 定理1 一个无向图是树当且仅当在它的每对定点之间存在唯一简单通路. 可以给出一个算法:使用广度优先搜索,能够遍历所有节点并且在访问一个节点之后. 后面遍历的到的节点中不再包含这个节点. 算法如下: 数据结构: Mark数组存储节点是否被遍历过的,-1代表没被遍历,1代表已经被遍历 relationString数组存储 图中包含元素 第一步: 找到一个节点做为树根,将它的所有孩子标记为1, 第二步: 以上一步产生的所有孩子为根节点,广度优先搜索

【原创】算法导论11章带星第4题试解

题目: 我们希望在一个[非常大]的数组上,通过利用直接寻址的方式来实现一个字典.开始时,该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大.请给出在大数组上实现直接寻址字典的方案.每个存储对象占用O(1)空间:SEARCH.INSERT和DELETE操作的时间均为O(1):并且对数据结构初始化的时间为O(1). (提示:可以利用一个附加数组,处理方式类似于栈,其大小等于实际存储在字典中的关键字数目,以帮助确定大数组中某个给定的项是否有效) 解答: 这个提示非

外部排序-第11章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第11章 外部排序 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼11 外部排序    

java第四章编程题(初学篇)

代码: 1 /* 2 test.java 3 */ 4 package test; 5 public class test { 6 public static void main(String args[] ) 7 { 8 CPU ccp= new CPU(); 9 HardDisk hhd=new HardDisk(); 10 PC pc =new PC(); 11 ccp.setSpeed(2200); 12 hhd.setAmount(200); 13 pc.setCPU(ccp); 14

java学习之第五章编程题示例(初学篇)

1 /* 2 Animal.java 3 */ 4 package animal; 5 6 public abstract class Animal { 7 public abstract void cry(); 8 public abstract String getanimalName(); 9 } 1 //Dog.java 2 package animal; 3 4 public class Dog extends Animal 5 { 6 7 String aa="旺旺"; 8