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

C++學習之重載運算符1,之重運算符

編輯:C++入門知識

C++學習之重載運算符1,之重運算符


C++除可重載函數之後,還允許定義已有的運算符,這樣通過運算符重載可像處理數據使用它們。

先來個代碼

1 #include<iostream> 2 using namespace std; 3 4 class num 5 { 6 public: 7 num(){n=1;} 8 ~num(){} 9 int get() const{return n;} 10 void set(int x){n=x;} 11 private: 12 int n; 13 }; 14 15 int main() 16 { 17 num i; 18 cout<<i.get()<<endl; 19 i++; 20 return 0; 21 } View Code

編譯將提示一個錯誤:

--------------------Configuration: demo1 - Win32 Debug--------------------
Compiling...
demo.cpp
E:\CCDEMO\demo1\demo.cpp(19) : error C2676: binary '++' : 'class num' does not define this operator or a conversion to a type acceptable to the predefined operator 此處提示沒有該類沒有重載++這個運算符;

執行 cl.exe 時出錯.

demo1.exe - 1 error(s), 0 warning(s)

將代碼處:i++ 注釋,編譯即成功;如何解決以上問題,我們可以使用一函數解決,看以下代碼:

#include<iostream>
using namespace std;

class num
{
public:
	num(){n=1;}
	~num(){}
	int get() const{return n;}
	void set(int x){n=x;}
	void add(){++n;}
private:
	int n;
};

int main()
{
	num i;
	cout<<i.get()<<endl;
	i.add();
	cout<<i.get()<<endl;
	//i++;
	return 0;
}

  以上能解決問題,但還沒有現實我們所說的C++重載運算符;以下使用運算符重載:

1 #include<iostream> 2 using namespace std; 3 4 class num 5 { 6 public: 7 num(){n=1;} 8 ~num(){} 9 int get() const{return n;} 10 void set(int x){n=x;} 11 void add(){++n;} 12 void operator++(){++n;} //此處使用了重載運算符 13 private: 14 int n; 15 }; 16 17 int main() 18 { 19 num i; 20 cout<<i.get()<<endl; 21 i.add(); 22 cout<<i.get()<<endl; 23 ++i;//這裡使用++運算符 24 cout<<i.get()<<endl; 25 return 0; 26 } View Code

好了。編譯一下,沒有問題。這就是最簡單的運算符重載。

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