1.
從const
成員函式返回
*this
在普通的非
const
成員函式中,
this
的型別是乙個指向類型別的
const
指標,可以改變
this
所指向的值,但不能改變
this
所儲存的位址。在
const
成員函式中,
this
的型別是乙個指向
const
類型別的
const
指標,既不能改變
this
所指向的物件,也不能改變
this
所儲存的位址。
基於const
可以過載成員函式。 2.
可變資料成員使用
mutable
宣告,可以在任何成員函式中改變(包括
const
)。3.
沒有預設建構函式的類型別,
const
或引用型別的資料成員,必須在建構函式初始化列表中初始化。成員初始化的順序就是定義成員的順序。 4.
類成員宣告的查詢
類成員定義中的名字查詢
5.c++
支援兩種初始化:直接初始化和複製初始化,複製初始化使用
=符號,直接初始化將初始化式放在圓括號中。
string null_book=」9-9999」;//
複製初始化
string dots(10,』.』);
string empty_copy = string();
string empty_direct;
ifstream file1(「filename」);//
直接初始化
ifstream file1 = 「filename」;//
複製初始化,錯誤
6.下標操作符過載
必須定義為類成員函式。類定義下標操作符時,一般需要定義兩個版本:乙個味非
const
成員並返回引用,另乙個為
const
成員並返回
const
引用。class foo;
int & foo::operate(const size_t index)
const int & foo::operate(const size_t index)const
7.自增自減操作符過載
class checkedptr
checkedptr& operator++();
checkedptr& operator--();
private:
int* beg;
int* end;
int* cur;
};checkedptr& checkedptr::operator++()
checkedptr& checkedptr::operator--()
為了區別操作符的字首和字尾形式,字尾式操作符函式接受乙個額外的
int形參,使用字尾式操作符時,編譯器提供
0作為這個形參的實參。
class checkedptr;
為了與內建操作符一致,字尾式操作符應返回舊值(尚未自增自減的值),並且應返回值,而不是引用。
checkedptr checkedptr::operator++(int)
checkedptr checkedptr::operator--(int)
8.呼叫操作符和函式物件
struct absint
int i=-42;
absint absobj;
unsigned ui = absobj(i);
函式呼叫操作符必須定義為成員函式,乙個類可以定義呼叫操作符的多個版本,由形參的樹目和型別加以區別。
9.轉換操作符
轉換操作符是一種特殊的類成員函式,它定義將類型別值轉變為其他型別值的轉換。
class smallint
operator int() const
private:
std::size_t val;
}轉換函式必須是成員函式,不能指定返回型別,並且形參表必須為空,通常定義為
const
成員。
C Primer學習筆記 (二)
case true string file name getname break case false 這個 不行,想想 如果先執行了 false,然後false 裡面用到了 file name 怎麼辦?會提示沒有定義 並且編譯器會報錯 dev c 嘗試了 因此要在 true 後新增大括號 表明區域...
C Primer學習筆記(二)
繼續。1.size t和string size type,vector size type.bitset的size函式返回值型別是size t。string和vector的size函式返回值型別是對應的size type size t 是乙個於機器無關的unsigned型別,其大小足以儲存記憶體物件...
C Primer 學習筆記(二)
第二章 2.1乙個char的空間應確保可以存放機器基本字符集中任意字元對應的數字值,也就是說乙個char的大小和乙個機器位元組一樣 2.2可定址的最小記憶體塊稱為位元組,儲存的基本單元稱為字 2.3一般來說,float和double分別有7和16個有效位 2.4在算術表示式中不要使用char或boo...