1、就算是預設建構函式不需要構造任何東西,也要寫出乙個空函式體!如大整數類
class long_int
return is;
}//代碼有誤。。。。。。待修改!
int size() void output();private:std::vectordata;};long_int::long_int() {}//這一句不能少,即使是空函式體!
2、析構函式在下面這兩種情況下必需:1)在建構函式執行過程中申請了一些資源(內容空間),需要在物件被銷毀時進行釋放時,就需要自己定義析構函式。(即有動態分配的類)
2)若從某個基類派生出自己的類,而派生類除了基類已經有的資源,又額外申請了資源,則需要在虛析構(virtual destructor)函式中釋放額外的資源(這裡要求基類的析構函式是虛析構函式)。(即基類)
3、在類中的一些**編寫技巧:
1)記得typedef vec::size_type size_type 這一句,以後就不用寫vec::了;
4、如果有了轉換型別的建構函式,就不需要新增轉換型別的賦值運算子函式了。比如在有了int型引數構造大數的建構函式,寫下big_int i=6;這種語句是可行的,編譯器會自動轉換為大數型別。例:s = "hello";這樣的表示式,其實是做了兩步操作:1)利用建構函式為字串字面量構造乙個沒有名稱、區域性的、臨時的str型別物件,然後再呼叫編譯器自動生成的賦值運算子函式(沒有寫的話,系統會自動生成)將這一臨時值賦值給s。
5、二元運算子(>>,<<,+)等可以看作有兩個引數的函式。
6、istream& operator>>(istream& is,str& s)的**
istream& operator>>(istream& is,str &s)
return is;
}
注意,在c++中,寫操作的函式的標準模式是 t& function(t&) ,因為要寫入,所以引數必須是真實的引用,且不能使常量。且返回值也要是引用型別!
7、增加返回函式在public裡面不能進行寫操作。
8、友元函式不是成員函式,但是有著成員函式的訪問私有結構的特權。
9、加減法等,考慮到對稱性,以及不能對資料進行修改,這樣的操作符函式不應該是成員函式;但是+=這樣的操作符函式可以作為成員函式。
C 學習筆記(8) 模板
模板主要是提供一種處理方式,相當於加強版的函式處理,裡面的引數型別,處理方式都能夠被模板化,傳統的函式處理是不能夠針對多種處理方式的,所以會出現函式的過載問題。模板主要包括兩個方面 針對函式的模板,格式 template 函式返回值 函式名稱 函式引數 例如template void swap t ...
C 學習筆記 類模板
c 中將泛型思想引入到了類,實現了類模板,使得類的實現不再關注資料元素的具體型別,而只關注類所需實現的功能,適用於編寫資料結構相關 c 中的類模板以相同的方式處理不同的型別,在類的宣告前使用template關鍵字標識將要泛型程式設計,用於說明類中使用的t是泛指型別,類模板只能顯式指定具體型別,無法像...
C 學習筆記 類模板
類模板的例項化必須由程式設計師在程式中顯式地制定。定義模板類物件的格式 類模板名 型別實參表 物件名 實參表 舉個栗子 include using namespace std const int size 10 template typename atype 定義類模板 class atype at...