1. 程式人生 > >C++運算子過載的兩種方法

C++運算子過載的兩種方法

#include<iostream>
using namespace std;

class Complex
{
public:
	Complex(int a=0, int b=0)
	{
		this->a = a;
		this->b = b;
	}
	//成員函式 實現“-”的過載
	Complex& operator-(Complex &c)
	{
		this->a = this->a - c.a;
		this->b = this->b - c.b;
		cout << this->a<<"+"<<this->b<<"i"<< endl;
		return *this;
	}
public:
	int getA()
	{
		return this->a;
	}
	int getB()
	{
		return this->b;
	}
private:
	int a;
	int b;
};
//全域性函式 實現“+”過載
Complex operator+(Complex &t1, Complex &t2)
{
	Complex tmp(t1.getA()+t2.getA(),t1.getB()+t2.getB());
	cout <<tmp.getA()<<"+"<<tmp.getB()<<"i" << endl;
	return tmp;
}
int main()
{
	/*全域性函式,類成員函式方法實現運算子過載步驟
	1、要承認運算子過載是一個函式,寫出函式名稱   
	2、根據運算元,寫出函式引數
	3、根據業務,完善函式返回值(看函式是返回引用 還是指標 元素),及實現函式業務*/
	Complex c1(1,1);
	Complex c2(1,3);
	//先實現全域性函式
	//Complex c3 = c1 + c2;

	//實現成員函式
	Complex c4(10,10);
	c4.operator-(c1);
	system("pause");


}

相關推薦

C#調用非托管C++DLL的方法

sso tro medium direction ive 之間 測試工程 win bug C#編寫的代碼屬於跨平臺的托管代碼,C++語言可以編寫托管(managed)和非托管(native)代碼。在C#與C++的混合編程中,經常會使用C#來調用native C++的DL

【LeetCode】1. Two Sum(數之和)-C++實現的方法

本題是一下公司的面試題: 問題描述:   問題求解: 使用無序容器unorder_map實現: #include <iostream> #include <vector> #include <cassert> #inclu

PAT (Basic Level) Practice (中文) 1037 在霍格沃茨找零錢 (20 分)(C++)(方法

1037 在霍格沃茨找零錢 (20 分) 如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給定哈利應付的價錢 P 和他實付的錢 A,你的

C++ 分割字串方法

字串切割的使用頻率還是挺高的,string本身沒有提供切割的方法,但可以使用stl提供的封裝進行實現或者通過c函式strtok()函式實現。1、通過stl實現涉及到string類的兩個函式find和substr: 1、find函式 原型:size_t find ( const

C#呼叫非託管C++DLL的方法

 C#編寫的程式碼屬於跨平臺的託管程式碼,C++語言可以編寫託管(managed)和非託管(native)程式碼。在C#與C++的混合程式設計中,經常會使用C#來呼叫native C++的DL

C#呼叫C++ dll的方法

靜態呼叫 [DllImport(@"xxx.dll", EntryPoint = "TestMethod")] static extern string TestM

C++運算子過載方法

#include<iostream> using namespace std; class Complex { public: Complex(int a=0, int b=0) { this->a = a; this->b = b;

c++運算子過載中的形式以及常引用的使用

下面是c++運算子過載的兩種形式: 形式1: Point operator + (const Point& A,const Point& B) { return Point(A.x+B.x,A.y+B.y); } 形式2: ostream&

運算子過載 過載方法 +

一、運算子過載入門技術推演 #include<iostream> using namespace std; class Complex { public: int a; int b; public: Complex(int a = 0,int b =

C++ 分割字符串方法

成功 ack 查找位置 == 指針 ret back 分隔符 替代 字符串切割的使用頻率還是挺高的,string本身沒有提供切割的方法,但可以使用stl提供的封裝進行實現或者通過c函數strtok()函數實現。 1、通過stl實現 涉及到string類的兩個函數find和s

統計字符串單詞數的方法(c語言實現)

字符串長度 字符 include ++ hit you 問題 code bool  問題描述:統計一個字符串,字符串由單詞,空格構成。  思路:   一,遍歷字符串所有字符,設置一個布爾變量來判斷當前是空格還是字母      1 #include <stdio

C語言經典演算法(九)——遞迴實現二分查詢的方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現

C語言經典演算法(八)——遞迴實現斐波那契數列的方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列 1、 遞迴實現斐波那契數列Fib(n) <1> 題目描述:輸入n值,求解第n項的斐波那契數列值 <2> 方法一:概念法 <3> 方法二:遞迴法 斐波那契數列值是值1

C語言經典演算法(七)——遞迴實現階乘演算法的方法

今後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現階乘演算法N! 1、 遞迴實現n! <1> 題目描述:輸入n值,求解n的階乘 <2> 方法一:累乘法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現n! 1、 累乘法 #

C語言判斷素數(求素數)(方法)(第二沒看懂Kkkkk有空一定搞明白)(非原創)

素數又稱質數。所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。 思路1):因此判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。 思路2):另

C++】int轉換為string的方法(to_string、字串流)轉載

int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉int,long,以及long lo

初夏小談:C/C++防止標頭檔案被重複包含的方法及區別

防止標頭檔案被重複包含的兩種方式: 1.條件編譯的巨集 2.#pragma once 先來說說第一種: #ifndef __HEADNAME__H__ #define __HEADNAME__H__ //... //標頭檔案 #endif C/C++標準支援

C++中sort函式從大到小排序的方法

1.sort函式描述 而且,sort函式的演算法效率相當於快排,使用sort函式有時候可能比我們自己寫一個排序演算法,可能效率更高。 2.使用sort函式排序 #include <iostream> #include <algorithm> usin

C語言——方法計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

方法一:首先我們先觀察這個數學式子的規律,可以發現奇數項均為正數,偶數項均為負數。則我們可以利用條件語句if來判斷奇偶,最後分別對奇數項和偶數項求和。 原始碼: #include<stdio.h> #include<stdlib.h> int main() {

C#讀寫txt檔案的方法介紹

1.新增名稱空間   System.IO;   System.Text; 2.檔案的讀取   (1).使用FileStream類進行檔案的讀取,並將它轉換成char陣列,然後輸出。 byte[] byData = new byte[100]; c