1. 程式人生 > >C++ 宣告並實現一個複數類

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;
}


相關推薦

C++ 宣告實現一個複數

<pre name="code" class="cpp">/****************************************************************************************** complex.hp

C++ 宣告實現一個日期(運算子過載)

/****************************************************************************************** date.hpp: Copyright (c) Bit Software, Inc.(2

C++】實現一個複數(complex)(帶有預設引數的建構函式 )

/*實現一個複數類(complex) class complex { private: double _real; double _image; }; */ #include <iostream

C++實現一個複數

#include <iostream> #include<stdlib.h> using namespace std; class Complex { public: Complex(double real, double ima

第七週上機任務三--實現一個複數--通過模板的技術手段,設計Complex,使實部和虛部的型別為定義物件時用的實際型別

/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生  * All rights reserved. * 檔名稱:實現一個複數類,通過模板類的技術手段,設計Complex,使實部和虛部的型別為定義物

如何實現一個複數

在c++中有6個預設的成員函式,分別是建構函式、拷貝建構函式、解構函式、賦值操作符過載、取地址操作符過載和const修飾的取地址操作符過載。在這篇文章中,我將通過實現複數類來對這幾個成員函式做一個簡單的說明。 1.建構函式 成員變數為私有的,要對它們進行初始

c++實現一個日期

#pragma once #include <iostream> using namespace std; class Date { private: int _year; int _month; int _day; int GetMonthDa

C/C++實現一個日期,過載運算子=,==,+,-,++,--,>,>=,

#include<iostream> #include<windows.h> using namespace std; class Date { public: Date(int year, int month, int day) //建構函式

C++實現一個日期

最近在複習C++的時候發現日期類是一個非常有用的類,在現實中是非常實用的(雖然我不知道為什麼這麼實用的類,庫裡沒有)以下是我自己實現的日期類的程式碼,因為大部分都是運算子的過載,所以理解起來應該並不難 #include <iostream> #include &

C#基礎-039 設計一個學生Student和它的一個子Undergraduate,進行測試

(1)Student 類有 Name(姓名)和 Age(年齡)屬性,一個包含兩個引數的構造方法,用於給Name和Age屬性賦值,一個Show()方法列印Student的屬性資訊。 (2)本科生類Un

C++實現一個有理數,包括大小比較,有理數的加減乘除。測試你的

//實現一個有理數類,包括大小比較,有理數的加減乘除。測試你的類。 #include <iostream> #include <stdlib.h> class Rational { public: Rational(int nu

C++實現一個string

#include<iostream> using namespace std; class String { private: char * m_data; public:

定義一個複數,用友元函式實現對雙目運算子“ + ”的運算子過載, 使其適用於複數運算

////定義一個複數類,用友元函式實現對雙目運算子“ + ”的運算子過載,////使其適用於複數運算//#include<iostream>using namespace std;class Complex{private:int real;int imag;pu

C++自己實現一個String

rcp null 申請 vat delete col lse none private C++自己實現一個String類(構造函數、拷貝構造函數、析構函數和字符串賦值函數) #include <iostream> #include <cstr

C#使用Socket實現一個socket服務器與多個socket客戶端通信

當前 rec inf hide 負責 new 數據庫 class 多臺   在分布式調度系統中,如果要實現調度服務器與多臺計算節點服務器之間通信,采用socket來實現是一種實現方式,當然我們也可以通過數據存儲任務,子節點來完成任務,但是往往使用數據作為任務存儲都需要定制開

C++之自己實現的String全部

efi char* 傳遞 light assign 關鍵字 flag pri ostream 一:回顧 (1)c++中的string類是在面試中和筆試中經常考的題目; 工程代碼免費下載 string類的自行實現 (2)c++中的string類和fstream類合起來是處理外

[python] 理解metaclass實現一個簡單ORM框架

lds asc into password 這樣的 內容 建行 ati 什麽 metaclass 除了使用type()動態創建類以外,要控制類的創建行為,還可以使用metaclass。 metaclass,直譯為元類,簡單的解釋就是: 當我們定義了類以後,就可以根據這個