程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 簡介C++編程中的運算符重載

簡介C++編程中的運算符重載

編輯:關於C++

簡介C++編程中的運算符重載。本站提示廣大學習愛好者:(簡介C++編程中的運算符重載)文章只能為提供參考,不一定能成為您想要的結果。以下是簡介C++編程中的運算符重載正文


所謂重載,就是從新付與新的寄義。函數重載就是對一個已有的函數付與新的寄義,使之完成新功效,是以,一個函數名便可以用來代表分歧功效的函數,也就是”一位多用”。

運算符也能夠重載。現實上,我們曾經在不知不覺當中應用了運算符重載。例如,年夜 家都已習氣於用加法運算符”+”對整數、單精度數和雙精度數停止加法運算,如5+8, 5.8 +3.67等,其實盤算機對整數、單精度數和雙精度數的加法操作進程是很不雷同的, 但因為C++曾經對運算符”+”停止了重載,所以就可以實用於int, float, doUble類型的運算。

又如”<<“是C++的位運算中的位移運算符(左移),但在輸入操作中又是與流對 象cout 合營應用的流拔出運算符,”>>“也是位移運算符(右移),但在輸出操作中又是與流對象 cin 合營應用的流提取運算符。這就是運算符重載(operator overloading)。C++體系對”<<“和”>>“停止了重載,用戶在分歧的場所下應用它們時,感化是分歧 的。對”<<“和”>>“的重載處置是放在頭文件stream中的。是以,假如要在法式頂用”<<“和”>>”作流拔出運算符和流提取運算符,必需在本文件模塊中包括頭文件stream(固然還應該包含”using namespace std“)。

如今要評論辯論的成績是:用戶可否依據本身的須要對C++已供給的運算符停止重載,付與它們新的寄義,使之一位多用。比方,可否用”+”號停止兩個單數的相加。在C++中不克不及在法式中直接用運算符”+”對單數停止相加運算。用戶必需本身想法完成單數相加。例如用戶可以經由過程界說一個專門的函數來完成單數相加。

[例] 經由過程函數來完成單數相加。

#include <iostream>
using namespace std;
class Complex //界說Complex類
{
public:
  Complex( ){real=0;imag=0;}  //界說結構函數
  Complex(double r,double i){real=r;imag=i;} //結構函數重載
  Complex complex_add(Complex &c2); //聲明單數相加函數
  void display( ); //聲明輸入函數
private:
  double real; //實部
  double imag; //虛部
};
Complex Complex::complex_add(Complex &c2)
{
  Complex c;
  c.real=real+c2.real;
  c.imag=imag+c2.imag;
  return c;
}
void Complex::display( ) //界說輸入函數
{
  cout<<"("<<real<<","<<imag<<"i)"<<endl;
}
int main( )
{
  Complex c1(3,4),c2(5,-10),c3;//界說3個單數對象
  c3=c1.complex_add(c2); //挪用單數相加函數
  cout<<"c1="; c1.display( );//輸入c1的值
  cout<<"c2="; c2.display( );//輸入c2的值
  cout<<"c1+c2="; c3.display( );//輸入c3的值
  return 0;
}

運轉成果以下:

c1=(3+4i)
c2=(5-10i)
c1+c2=(8,-6i)

成果無疑是准確的,但挪用方法不直不雅、太煩瑣,令人覺得很不便利。可否也和整數的加法運算一樣,直接用加號”+”來完成單數運算呢?如

  c3=c1+c2;


編譯體系就會主動完成c1和c2兩個單數相加的運算。假如能做到,就為對象的運算供給了很年夜的便利。這就須要對運算符”+“停止重載。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved