1樓:最愛佳偶天橙
#include
using namespace std;
const int r=3, c=4;
class matrix
}void display()}};
int main()
定義student類儲存學生資訊(包括學號、姓名和成績),過載提取運算子和插入運算子實現學生資訊的 10
2樓:soring的春天
過載就是實際運算子的算術功能,比如說類a與類b,類a中有變數aa, 類b中有變數bb, 通常的搞法是a.aa + b.bb = xx, 過載後就是a+b = xx,
3樓:育知同創教育
多去複習下吧 這個不難 學到的知識是你自己的誰也拿不走
4樓:拷你妹
好好學習,別再糊弄老師了
c++中如何自定義過載運算子
5樓:匿名使用者
c++中預定義的運
算符其運算物件只能是基本資料型別,而不適用於使用者自定義型別(如類).
// 同上,內建的運算子 只能應用於內建的資料型別 ...比如 int char double .等等。
(一) c++不允許使用者自己定義新的運算子,只能對已有的c++運算子進行過載。
// 就是說只能過載內建的 + - * / 等運算子,不能自己創造運算子計算。 。
(二) c++允許過載的運算子c++中絕大部分的運算子允許過載.
不能過載的運算子只有5個:
(1) 成員訪問運算子.
(2) 作用域運算子∷
(3) 條件運算子?:
(4) 成員指標運算子*
(5) 編譯預處理命令的開始符號#
(三) 過載不能改變運算子運算物件(即運算元)的個數。
// 不能改變運算子運算物件, 比如+法運算子,那麼它有兩個運算元 ..當我們過載它的時候 也只能有兩個運算元 。
(四) 過載不能改變運算子的優先順序別。
// 過載完之後並不能改變它的優先順序別,比如 +號, 無論你怎麼設計過載函式. 它永遠不可能比()的優先順序高......
(五) 過載運算子的函式不能有預設的引數,否則就改變了運算子引數的個數,與前面第(3)點矛盾。
// 於上面3..同。
(六) 過載的運算子必須和使用者定義的自定義型別的物件一起使用,其引數至少應有一個是類物件(或類物件的引用)。也就是說,引數不能全部是c++的標準型別,以防止使用者修改用於標準型別資料的運算子的性質。
// 過載的引數不能全部是c++內建資料型別。 至少要有一個是自定義型別。因為如果我們定義的是兩個內建的型別 就會跟系統所定義的衝突。
因為當我們使用內建的運算子時,那麼編譯器其實也是呼叫的一個過載運算子進行計算。這是編譯器自動新增的。 如果我們也定義的相同 那麼肯定會產生衝突。
(七) 用於類物件的運算子一般必須過載,但有兩個例外,運算子「=」和「&」不必使用者過載。
① 賦值運算子(=)可以用於每一個類物件,可以利用它在同類物件之間相互賦值。
② 地址運算子&也不必過載,它能返回類物件在記憶體中的起始地址。
// 前面已經說過,c++內建運算子只能計算內建的資料型別 。所以當我們要使用自定義型別時 就必須要進行過載..
總之,當c++語言原有的一個運算子被過載之後,它原先所具有的語義並沒有消失,只相當於針對一個特定的類定義了一個新的運算子。
運算子過載可以使用成員函式和友元函式兩種形式。可以參考以下的經驗:
(1)只能使用成員函式過載的運算子有:=、()、、->、new、delete。
(2)單目運算子最好過載為成員函式。
(3) 對於複合的賦值運算子如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建議過載為成員函式。
(4) 對於其它運算子,建議過載為友元函式。
運算子過載的方法是定義一個過載運算子的函式,在需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應的運算。也就是說,運算子過載是通過定義函式實現的。運算子過載實質上是函式的過載。
過載運算子的函式一般格式如下:
函式型別 operator 運算子名稱 (形參表列)
過載為類成員函式時引數個數=原運算元個數-1
(後置++、--除外)
// 當過載為類成員函式時,引數個數等於原來的運算元-1 ..比如 物件a +物件b ..我們過載的時候需要兩個運算元 a 和b 但我們傳遞過去一個就可以了 , 比如 a+b 我們只需要把b傳遞過去就可以了。
因為當呼叫過載運算子時 就是a呼叫的過載運算子,那麼它就是當前物件 它就是這時的this 指標 ..而且類成員函式只能使用兩個類中成員...
過載為友元函式時 引數個數=原運算元個數,且至少應該有一個自定義型別的形參。
//與上面沒多大區別,但它卻可以呼叫非類中物件.. 比如呼叫一個物件a+1 ..注意的是即使定義為友元函式,它的運算元也必須有一個為自定義型別。
看一個例項:
#include
using namespace std;
class ***plex //複數類宣告
//建構函式
***plex operator + (***plex c2); //+過載為成員函式
***plex operator - (***plex c2); //-過載為成員函式
void display(); //輸出顯示覆數
private: //私有資料成員
double real; //複數實部
double imag; //複數虛部
};***plex ***plex::operator +(***plex c2) //過載函式實現
***plex ***plex::operator -(***plex c2) //過載函式實現
void ***plex::display()
這段** 修改一下... 改為 ***plex friend ***plex::operator +(***plex c2 ***plex c3)
那麼同樣也可以完成相同的功能..而且還更容易擴充..因為從上面得知..
過載的運算子必須和使用者定義的自定義型別的物件一起使用. 也就是說至少有一個自定義型別..或者是它的引用..
如果我們使用成員運算子過載的話只能使用類中的物件成員..而使用友元運算子過載那麼我們則可以使用類外的資料..當我們需要使用的時候直接修改為 ***plex friend ***plex::
operator +(***plex c2 int a) 如這樣的形式就可以了。
6樓:匿名使用者
[c++]過載運算子 收藏
所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能。
運算子也可以過載
運算子過載是對已有的運算子賦予多重含義
必要性c++中預定義的運算子其運算物件只能是基本資料型別,而不適用於使用者自定義型別(如類)
(一) c++不允許使用者自己定義新的運算子,只能對已有的c++運算子進行過載。
(二) c++允許過載的運算子c++中絕大部分的運算子允許過載.
不能過載的運算子只有5個:
(1) 成員訪問運算子.
(2) 作用域運算子∷
(3) 條件運算子?:
(4) 成員指標運算子*
(5) 編譯預處理命令的開始符號#
(三) 過載不能改變運算子運算物件(即運算元)的個數。
(四) 過載不能改變運算子的優先順序別。
(五) 過載運算子的函式不能有預設的引數,否則就改變了運算子引數的個數,與前面第(3)點矛盾。
(六) 過載的運算子必須和使用者定義的自定義型別的物件一起使用,其引數至少應有一個是類物件(或類物件的引用)。也就是說,引數不能全部是c++的標準型別,以防止使用者修改用於標準型別資料的運算子的性質。
(七) 用於類物件的運算子一般必須過載,但有兩個例外,運算子「=」和「&」不必使用者過載。
① 賦值運算子(=)可以用於每一個類物件,可以利用它在同類物件之間相互賦值。
② 地址運算子&也不必過載,它能返回類物件在記憶體中的起始地址。
總之,當c++語言原有的一個運算子被過載之後,它原先所具有的語義並沒有消失,只相當於針對一個特定的類定義了一個新的運算子。
運算子過載可以使用成員函式和友元函式兩種形式。可以參考以下的經驗:
(1)只能使用成員函式過載的運算子有:=、()、、->、new、delete。
(2)單目運算子最好過載為成員函式。
(3) 對於複合的賦值運算子如+=、-=、*=、/=、&=、!=、~=、%=、>>=、<<=建議過載為成員函式。
(4) 對於其它運算子,建議過載為友元函式。
運算子過載的方法是定義一個過載運算子的函式,在需要執行被過載的運算子時,系統就自動呼叫該函式,以實現相應的運算。也就是說,運算子過載是通過定義函式實現的。運算子過載實質上是函式的過載。
過載運算子的函式一般格式如下:
函式型別 operator 運算子名稱 (形參表列)
過載為類成員函式時引數個數=原運算元個數-1
(後置++、--除外)
過載為友元函式時 引數個數=原運算元個數,且至少應該有一個自定義型別的形參。
將「+」、「-」運算過載為複數類的成員函式。
規則:實部和虛部分別相加減。
運算元:
兩個運算元都是複數類的物件。
#include
using namespace std;
class ***plex //複數類宣告
//建構函式
***plex operator + (***plex c2); //+過載為成員函式
***plex operator - (***plex c2); //-過載為成員函式
void display(); //輸出顯示覆數
private: //私有資料成員
double real; //複數實部
double imag; //複數虛部
}; ***plex ***plex::operator +(***plex c2) //過載函式實現
***plex ***plex::operator -(***plex c2) //過載函式實現
void ***plex::display()
{ cout<<"("
在將運算子函式過載為成員函式後,如果出現含該運算子的表示式,如c1+c2,編譯系統把它解釋為c1.operator+(c2)
即通過物件c1呼叫運算子過載函式,並以表示式中第二個引數(運算子右側的類物件c2)作為函式實參。運算子過載函式的返回值是***plex型別,返回值是複數c1和c2之和(***plex(c1.real + c2.
real,c1.imag+c2.imag))。
c定義類,封裝矩形的長寬,在定義類,繼承自定義的這
c 定義一個類圓circle或者定義一個矩形類rectangle,分別計算它們的周長和麵積.定義一個類圓circle或者定義一個矩形類rectangle,定義其資料成員和方法,圓有半徑,矩形有長和寬,定義兩個方法分別計算它們的周長和麵積.建立兩個物件,這兩個物件的資料不同,分別輸出顯示它們的周長和麵...
中怎麼自定義頁碼,WORD中怎麼自定義頁碼
進入頁尾 插入自 文集,選擇 第x頁共y頁 然後到頁碼上刪除 第 頁 共 頁 並在兩個頁碼之間輸入 即可!告訴你個笨辦法 先插入 第x頁共y頁 的樣式 然後刪掉裡面的字,再加個斜槓,變成 x y 然後就變成你要的那樣的格式了。我幫你試過了,不行,看來你只能用頁尾來自己打上去了 word中怎麼讓自編的...
php呼叫自定義函式,php自定義函式中怎麼呼叫類中方法
引用符號。不加引用時候,你傳進去的 a被複制了一份,然後你在函式裡面改變 a實際上是改變複製的那個,原來的那個不變,退出函式後 a還是原來那個值。加了引用符號后里面的 a就是外面的 a的引用,修改了函式裡面的 a就等於修改了外面的 a。function 是用來定義函式的,呼叫的時候不用functio...