1樓:匿名使用者
優先決括號成員第一; //括號運算子() 成員運算子. ->
全體單目第二; //所有的單目運算子比如++ -- +(正) -(負) 指標運算*&
乘除餘三,加減四; //這個"餘"是指取餘運算即%
移位五,關係六; //移位運算子:<< >> ,關係:> < >= <= 等
等於(與)不等排第七; //即== !=
位與異或和位或; //這幾個都是位運算: 位與(&)異或(^)位或(|)
"三分天下"**十;
邏輯或跟與; //邏輯運算子:|| 和 &&
十二和十一; //注意順序:優先順序(||) 底於 優先順序(&&)
條件高於賦值, //三目運算子優先順序排到 13 位只比賦值運算子和","高//需要注意的是賦值運算子很多!
逗號運算級最低! //逗號運算子優先順序最低
c++運算子過載,有沒有人能更詳細的解說一下,我看了很久還是理解不了。最好舉例說一下,謝謝~祝新年快樂
2樓:゛冰冰の回憶
一、過載例子:
class coperator
;#include ".\opartor.h"
#include
using namespace std;
coperator::coperator(void)
coperator::~coperator(void)
上述是一個過載的例子。應該說這幾種過載包含了過載的各種型別。下述章節中會分類介紹。
三、可以過載的運算子
c++規定了五個不能過載的運算子“.、::、.*、.->*、?”其它運算子都是可以過載的。
下列運算子不允許過載:
.,.,::,?:
四、運算子過載格式
返回型別 operator 運算子號(引數說明)
例如上例中對加法的過載
c++中規定,運算子中引數說明是內部型別時,不能過載。運算子過載過程中不會改變改運算子的運算優先順序。
五、運算子過載的引數
運算子過載的引數,往往是初學者難以掌握的。其實很簡單:參加運算的所有變數都是運算子的引數。
比如說加法過載過程中,有兩個參與的變數:加數和被加數。那我們就我對它進行過載的過程中需要兩個引數。
需要指出的增量運算子有兩種形式,前增量(運算子在變數前面)和後增量。前增量我們可以把他看做只有一個引數,而後增量我們可以看為a++0。事實上他是兩個引數。
只是在運算過程中,第二個引數我們不用而已。
運算子的過載有兩個方式,一種是做為成員函式,另一種是做為友無函式。前種c++預設省略第一個引數(事實上是物件本身),而後一種是所有的引數都要寫全。比如對加法的過載:
成員方式為在呼叫的過程中我們可以理解為result = operator+(op)
友元方式為在呼叫的過程中我們可以理解為result = operator-(op1,op2);
注:上面的理解方式可以看出,除了在呼叫形式上不同,過載的運算子和普通的函式是等效的。
六、返回值
c++中沒有對過載函式的返回值做太多的限制。為了使呼叫都能夠理解你所過載的函式,不會產生二義性。一般來講過載運算子的返回值會是該類的物件或是該類物件的引用。
在c++中所有函式(包括過載的運算子)在返回的過程中會構建一個返回型別的臨時物件。當函式執行完之後,這個物件會消失。應該說它是c++中生命週期最短的變數。
值得指出的是,系統構建這個臨時物件的過程中會呼叫copy建構函式。關於這一點筆都會在另一個話題中說明。
過載返回值是返回引用還是返回一個物件是由我們需要決定的。為了不讓呼叫者曲解,如果在運算過程中改變了參與運算的變數的值往往我們返回引用,如果不改變的話我們返回物件。例如:
在加法過載中,兩個參與運算的變數都沒有改變,所以我們就要返回一個新的物件,而不是兩個物件中的一個。(不要返回一個區域性引用,會出錯的)。而在前增量運算的過程中,返回的是我們改變後的物件,這樣直接返回引用就可以的。
過載運算子堅持4個“不能改變”。
不能改變運算子運算元的個數;
不能改變運算子原有的優先順序;
不能改變運算子原有的結合性;
不能改變運算子原有的語法結構。
3樓:sc黑色茉莉
過載就相當於再次定義,使其具有更多屬性.比如刀這個運算子一般就用來切菜,我也可以用來殺人.
c++ 三目運算子是什麼
4樓:砍侃看
#include
int main()
a>b?a:b;
其實dao就相當回於
答if(a>b)
return a;
else
return b;
5樓:fly愛與希望
就是唯一的那個吧
條件?滿足時 。。。。。。。:不滿足時。。。。。。。。。
請幫我詳細講解下c++中的邏輯運算子&&和||
6樓:
我用我的理解給你解釋把·
&&是邏輯與 &&左右的數都為1那麼值就是1 有一個數為0值為0
||是邏輯或 ||左右有一個數是1 值就為1 全是0值才為0
1(真) 0(假) 我自己用於理解記憶·..
這是一個關於c++等號運算子過載的問題,誰能給我解釋一下該等號運算子過載函式的具體含義,要清楚明瞭喔
7樓:劃破天際の星
#include
#include
class string
//定義解構函式
~string()
//宣告過載運算子=
//定義類成員函式
void print()
private:
char *ptr;
};//定義過載運算子
所謂過載運算子就是根據你自己生成的類的需要來重新解釋運算子的功能
比如在integer中,運算子=的功能是把一個整數型別的右值賦值給同型別的左值;但是如果繼續用這個解釋,就無法在新的類中正常運作。因此需要重新定義。
在這個例項中,等號運算子的功能是以一個string型別變數的引用為引數返回一個string型別的指標。如果當前指標已經指向引數s,那麼直接返回當前指標;否則,建立一個新物件,並且通過strcpy函式將s的賦值給它,之後返回該物件的指標。
8樓:匿名使用者
9樓:匿名使用者
p1和p2都是你自己定來義的源string類,它包含一些操作即函式成員,因此不能直接把一個類物件賦給另外一個物件,必須通過運算過載,讓“=”只做自己定義的內容。和函式過載一樣,函式會根據具體情況呼叫不同形式的函式。主函式中“p2= p1;”這條語句,就會呼叫你自己寫的“=”函式,而不是普通意義上的“=”。
函式內部的實現方式,相信你會明白,應該沒問題吧。其實沒有什麼神祕的地方,如果你定義的是另一個函式如copystr(),你呼叫p2.copystr(p1);相信你就會很好地理解,這樣的機制一樣,只不過用運算子過載看上去更明瞭。
C語言中的運算子條件運算子運算過程的講解
z x 1 y 1,y x 5 x 7,y 3 這句主要的有 du2個運zhi算符 dao,一個條件運算子 一個賦內值運算子 z 優先順序是條件運算子比容較高,可以轉換成 z x 1 y 1,y x 5 x 7,y 3 條件運算子 計算 前面表示式,為真返回冒號前面的,為假返回冒號後面的。因為 x ...
請問c語言中的算術運算子與關係運算子有什
是賦值符號,比如把a值複製到b b a 的關係運算子,是判斷兩邊值是否一樣,返回的是bool型別,貌似在各種語言中 都不能賦值吧!才能賦值,是關係運算子,說白了也就是做比較的。是賦值號 是和 一樣的比較符號 c語言中,賦值運算子 與關係運算中的 有什麼區別?能不能舉一些例子?謝了,急急急!區別在這,...
c語言中關係運算子的優先順序高於邏輯運算子嗎
是的不是有個優先順序歌嗎 圓方括號箭頭一句號.自增自減非反負,針強地址長度,乘除,加減,再移位,小等大等,等等不等,八位與,七位異,六位或,五與,四或,三疑,二賦,一真逗.c語言中邏輯運算子 的優先順序高於算術運算子。邏輯非 即 操作符 優先順序高於算術運算子。所有的單目操作符優先順序都高於雙目和三...