C++ 声明并实现一个复数类

<pre name="code" class="cpp">/******************************************************************************************
complex.hpp:
	Copyright (c) Bit Software, Inc.(2013), All rights reserved.

Purpose:
	声明并实现一个复数类

难度:**

Author:
	xxx

Created Time:
	2015-4-26
******************************************************************************************/

#ifndef COMPLEX_HPP_INCLUDED
#define COMPLEX_HPP_INCLUDED
#include <iostream>
using namespace std;
class complex
{
public:
	// 带缺省值的构造函数
	complex (double real = 0, double image = 0)
		:_real(real)
		,_image(image)
	{
		cout<<"complex (double real = 0, double image = 0)"<<endl;
	}

	// 析构函数
	~complex()
	{
		cout<<"~complex()"<<endl;
	}

	// 拷贝构造函数
	complex (const complex& d)
        :_image(d._image)
		,_real(d._real)
	{
		cout<<"complex (const complex& d)"<<endl;
	}

	// 赋值运算符重载
	// 思考为什么operator=赋值函数需要一个date&的返回值??
	complex& operator= (const complex& d)
	{
		cout<<"operator= (const complex& d)"<<endl;

		if (this != &d)
		{
			this->_real = d._real;
			this->_image = d._image;
		}
		return *this;
	}

	// 取地址运算符重载
	complex* operator& ()
	{
		cout<<"operator&()"<<endl;
		return this;
	}

	// const修饰的取地址运算符重载
	const complex* operator& () const
	{
		cout<<"operator&() const"<<endl;
		return this;
	}

	void display()
	{
		cout<<"real:"<<_real<<"--image:"<<_image<<endl<<endl;
	}
	complex operator+(const complex& c)
	{
        cout<<"operator+(const complex& c)"<<endl;
        return complex(_real+c._real,_image+c._image);
	}

	complex operator-(const complex& c)
	{
        cout<<"operator-(const complex& c)"<<endl;
        return complex(_real-c._real,_image-c._image);
	}
	complex operator*(const complex& c)
	{
        cout<<"operator*(const complex& c)"<<endl;
        return complex(_real*c._real-_image*c._image,c._image*_real+_image*c._real);
	}
	complex operator/(const complex& c)
	{
        cout<<"operator/(const complex& c)"<<endl;
        return complex<span style="font-family: Arial, Helvetica, sans-serif;">((_real/c._real+_image*c._image)/(c,_real*c._real+c._image*c._image),(_image*c._real-_real*c._image)/(c,_real*c._real+c._image*c._image))</span><span style="font-family: Arial, Helvetica, sans-serif;">; </span>
	}

private:
	double _real;
	double _image;
};

#endif // COMPLEX_HPP_INCLUDED

主函数:

#include "complex.hpp"
int main()
{
    //test_complex1();
    cout << "**********************" << endl;
    complex a(1.1,2.2);
    complex b(3.3,4.4);
    complex c;
    c = a + b;
    c.display();

    c = a - b;
    c.display();

    c = a * b;
    c.display();

    c = a / b;
    c.display();

    return 0;
}

时间: 2024-10-31 05:02:05

C++ 声明并实现一个复数类的相关文章

【c++】实现一个复数类

// 实现一个复数类(complex) //要求:1:实现不带参 / 带参数 /带默认参数的几种构造函数. // 2:实现拷贝构造 / 析构函数. #include <iostream> using namespace std; // 带参数的构造函数 class complex { private: double _real; double _image; public: void print(); complex(double _r, double _i); ~complex(); };

【C++】声明并实现一个万年历类【腾讯面试题】

一.万年历类中所包含函数,以及功能 /****************************************************************************************** Date.hpp: Copyright (c) Bit Software, Inc.(2013), All rights reserved. Purpose: 声明并实现一个万年历类[腾讯面试题] Author: xxx Created Time: 2015-4-26 *****

c++primer,自定义一个复数类

1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 #include<cstdio> 6 #include<complex> 7 using namespace std; 8 9 class Complex{ 10 //复数为直角坐标形式,a+bj 11 private: 12 double real; 13 double

sdut 4-1 复数类的运算符重载

4-1 复数类的运算符重载 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握成员运算符重载及友元运算符重载 要求定义一个复数类,重载加法和减法运算符以适应对复数运算的要求,重载插入运算符(<<)以方便输出一个复数的要求. 输入 要求在主函数中创建对象时初始化对象的值. 输出 输出数据共有4行,分别代表a,b的值和它们求和.求差后的值 示例输入 无 示例输出 a=3.2+4.5i b=8.9+5.6i a+b=12.1+10.1i

复数类(C++练习一)

写一个复数类,实现基本的运算,目的熟悉封装与数据抽象. 类的定义 #include <iostream> #include <vector> using namespace std; class Complex{ friend ostream & operator << (ostream & os, const Complex &); //重载输出标识符 friend Complex operator + (const Complex&,

C++习题 复数类--重载运算符+,-,*,/

Description 定义一个复数类Complex,重载运算符"+","-","*","/",使之能用于复数的加.减.乘.除.运算符重载函数作为Complex类的成员函数.编写程序,分别求两个复数之和.差.积和商. Input 两个复数 Output 两个复数之和.差.积和商 Sample Input 3 4 5 -10 Sample Output c1+c2=(8.00,-6.00i) c1-c2=(-2.00,14.00

【C++】复数类的实现

复数类的实现: 这个是以前学习的补全,记录一下吧. 复数类本身概念是具备一个实部_real和虚部_image,然后实现复数的加减乘除,自加自减还有等于符号的重载.算是一个基本的联系吧. 废话不多说,看看代码,很简单. Complex_class.h #include <iostream> #include <math.h> using namespace std; class Complex { private: double _real; double _imag; public

C++习题 复数类--重载运算符2+

Description 定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意.例如,c1+c2,i+c1,c1+i均合法(设i为整数,c1,c2为复数).编写程序,分别求两个复数之和.整数和复数之和. Input 两个复数 一个复数和一个整数 一个整数和一个复数 Output 两个复数之和.复数和整数之和,整数和复数之和. Sample Input 3 4 5 -10 3 4 5 5 3 4 Sa

简易复数类

[问题描述] 定义一个复数类,并重载运算符,以实现复数的加减乘除,相等与否,并显示其结果. [代码实现] // code.c #include <iostream> using namespace std; class Comoplex { friend ostream& operator<<(ostream& os ,const Comoplex& c); //友元 public: Comoplex(double real = 0.0, double im