3 回答

TA貢獻1809條經驗 獲得超8個贊
typedef 的目的是把index定義成std::string::size_type 的別名,這里應該就是無符號整型
兩個get函數首先解釋下const的意思,表明該函數不會改變任何成員變量的值
這兩個函數的返回值都是char型 只是參數不同,實現不同
第一個函數沒有參數,返回string constents中curcor所對應的字符,算是inline函數
第二個函數有兩個參數,但沒有實現,應該在對應的cpp文件中有具體的實現,這里只是一個函數聲明

TA貢獻1805條經驗 獲得超9個贊
幫你整理下?。?br/>class screen{
public:
typedef std::string::size_type index; //這里把index定義為std::string::size_type的類型(string的字符長度的類型,通常應該是int型)
char get() const{return contents[cursor];} //這里定義了一個函數,該函數沒有參數,返回值是一個char型,并且是不能被外部修改的值(用const修飾了)。 函數體里面
return contents[cursor]; //contents是一個string類型的, cursor是一個index型的,所以
contents[cursor]就是指字符串contents中處在cursor位置上的字符。
char get() (index hg, index wi) const; //我猜想應該不是這樣的吧,而是
char get(index hg, index wi) const; //這個函數與上面的函數構成重載,什么是函數的重載呢?即函數的參數個數,參數類型,參數順序等不同,就能夠長重載。
函數重載的意義:當你調用函數時,對同一個函數名,你給的參數不同那么調用的函數也就不同。

TA貢獻1757條經驗 獲得超7個贊
char get() const{return contents[cursor]; }
char get() (index hg,index wi) const;這兩個函數為重載函數,函數名相同而形參個數或類型不同的函數就是重載函數,從screen類的定義可知,contents和cursor都為私有成員,其變量類型不同,contents是std::string類型的變量,應該在其他文件中有定義其類型,而cursor是index
類型的變量,在public下的第一行已經定義過,是std::string::size_type 類型的。
對于兩個重載函數的區別,是在類的實現過程中編譯器自動識別的,根據實現文件中所提供的對象是否帶參數,或者參數的個數不同加以區別。
- 3 回答
- 0 關注
- 151 瀏覽
添加回答
舉報