C 運算子過載

2022-12-17 06:25:18 字數 1190 閱讀 3975

1樓:

其實很簡單,只要你對類的建構函式和解構函式了解的差不多。

首先說第一個問題:

/////為什麼會突然出現"string t(p)"//

在函式 string::operator+(const char*p)中,它接受一個字元指標p,返回一個string類物件,這個你懂吧?這就好辦了,這個函式想返回一個string類物件,必須先建立一個物件吧?

所以有string t(p);利用了

string(const chat*s)

這個建構函式,即把指標p傳給建構函式,新建一個物件。

然後第二個:t=*this+t; /////為什麼會有兩個t,它們各表示什麼//

第一個t是等待被賦值的string類物件,*this就是當前物件的內容,也就是誰呼叫了string::operator+(const char*p),*this就是誰(這裡是另一個string物件)。然後*this+t就是把兩個string類物件相加,最後賦給物件t。

給你舉個例子:

#include

#include

int main()

這個程式就呼叫了過載運算子,使string類物件內容變為「kkk is n0.1 kkk is a good man」

呵呵,到這你應該懂了一點吧?

/////////"t(p)"表示什麼,為什麼p在括號內//

我這個還用說嗎?這是新建一個string類物件,以字元指標p作為引數,所以要在括號內。

{char temp[4096]; ///temp[4096]是什麼///

你應該知道陣列吧?比如int myint[10]就是建立一個整數變數陣列,而且大小為10個整數的大小,同理,

char temp[4096]就是建立一個字元陣列(和指標類似,就是有大小限定,指標沒有限定),該字元陣列的大小為4096個字元。

in>>temp; ///in>>是什麼意思///

這是輸入流的一個操作符,意思是從鍵盤輸入的內容(流)送入到計算機內供處理。這個操作符被過載了,所以你可以從鍵盤上直接輸入一個string類物件,比如這樣cin>>mystring;就可以實現了。(mystring就是一個string類物件)

out<>" 與 "<<"有什麼作用

我就不用說這個了吧?

2樓:匿名使用者

建議自己先找本教材把基本概念先弄明白

c 運算子過載,c 運算子過載

其實第一個回答的程式已經ok了,這裡簡要說明一下 首先,名稱空間的問題。cout endl以及ostream都是定義在std這個名稱空間下的,因此在使用前必須包含這個一個using指示 using namespace std 表明可以使用std裡面的所有內容。除此以外還有兩種選擇 1.使用作用域運算...

C運算子過載

我想樓主主要是想看到過載函式的實現過程,所以我自動給參加運算的複數付值。考慮你是初學者,我都用的是很簡單的語句寫的,都是一看就懂的句子。include using namespace std class complex private double m image 描述實部 double m rea...

c中運算子過載到底有什麼何意義,C中運算子過載到底有什麼何意義

運算子過載是一種特殊的函式過載。例如int a,b 則求a b值時,在編譯過程中使用的是函式呼叫 opertor a,b 主要作用就是使程式更加簡潔,減少程式設計時間。運算子過載是一種特殊的函式過載。c 的一大特性就是過載 overload 通過過載可以把功能相似的幾個函式合為一個,使得程式更加簡潔...