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 通過過載可以把功能相似的幾個函式合為一個,使得程式更加簡潔...