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左移運算子的問題C
比較淺顯的來說,左移n位就是乘以2的n次方,右移n位就是除以2的n次方。具體細節如下 c語言裡的左移和右移運算 先說左移,左移就是把一個數的所有位都向左移動若干位,在c中用 運算子.例如 int i 1 i i 2 把i裡的值左移2位 也就是說,1的2進位制是000.0001 這裡1前面0的個數和i...
c中運算子《是幹什麼用的,C中運算子和運算子有什麼區別
在沒有過載的情況下,運算元都是整數時,是位移運算。這個例子中就是將i這個整數表示成的二進位制數左移k個位置,右邊補0。位運算的 就是向左移幾位 你的程式有未定義行為,最好不要用 輸出運算子,相當於printf c 中 運算子和 運算子有什麼區別 是左移運算子號,是把運算元看成二進位制數,然後左移指定...
c語言運算子和的區別C語言運算子和的區別
是位運算子,也就是二進位制計算 07h 111b fch 11111100b 07h fch 100b 4h 是邏輯運算子,0代表false,其他數值代表true 一般用1表示 07h 不是0,所以為true fch 不是0,所以為true true true 的結果為 true,用1表示,所以07...