關於c++ seekg( ) 與 tellg()函式使用 , 首先建立一個空白 .txt檔案 , 並設定兩個讀取位置 , 計算兩設置點bytes距離 , 為何在空白 .txt檔案bytes距離不為0呢???
file.seekg (0, ios::beg); //第一個讀取位置
關於c++ seekg( ) 與 tellg()函式使用 , 首先建立一個空白 .txt檔案 , 並設定兩個讀取位置 , 計算兩設置點bytes距離 , 為何在空白 .txt檔案bytes距離不為0呢???
file.seekg (0, ios::beg); //第一個讀取位置
若cin>>array已擷取一個實質字元之後,再遇到(tab)(space)(enter)鍵則不擷取,且將其無形字元滯留於buffer,以供給給下一個cin.get(array,n,'ch')或cin.getline(array,n,'ch')擷取函式擷取.
cin.get(array,n,'ch')或cin.getline(array,n,'ch')僅對停止擷取鍵'ch'不擷取.但對tab或space或使用預設停止擷取鍵enter,仍然擷取.
在成員函式有建立區域物件而執行constructor時 , 或成員函式傳回物件以建立新物件,而執行copy constructor時,於成員函式執行結束後均會執行destructor.
在成員函式建立區域物件而執行constructor,且成員函式傳回參照物件,則當成員函式執行結束時,立即執行區域物件的destructor.而解構內的delete [] d將使得成員變數內容被刪除,以使得成員函式所傳回參照物件,其成員變數內容消失.(範例10-6(s1+s2).show()無成員變數內容).
兩種方法可修改指標內容:1.將指標指向另一個地址 2.將指標宣告為動態記憶體指標,則指標由原本的指向改指到動態記憶體地址.
在destructor內執行釋放動態體記憶指標,並於destructor內輸出動態記憶體指標地址與內容,結果則地址依舊存在(指標依舊指向該地址),但內容則刪除.
同一個物件的初始值可使用constructor設定多次,但一個物件的copy constructor僅可執行一次,第二次則會執行前面無class_name的物件設定式win1=win2;並執行operator=()設定運算子多載函式.
當宣告建立物件(即使無設定初始值)後,可不必執行物件拷貝,即可執行物件設定式,即執行operator=()運算子多載函式,
void f(char&);
int main(void)
針對預定義數據類型,c++提供了自增運算符++與自減運算符--,這兩個運算符都有兩種形式,前置與後置,但早期的c++雖能覆載這兩個運算符,但無法區分這兩種形式,在新的c++版本中,編譯器可以通過在運算子覆載函式的參數列中是否有int來區分為前置或後置.
使用前置運算符的語法格式++<物件>
1.對雙運算元而言,運算子多載成員函式帶有一個參數,而運算子多載友誼函式帶兩個參數,對單運算元而言,運算子多載成員函式不帶參數,而運算子多載友誼函式帶一個參數.
2.雙運算元一般可以覆載成員函式或友誼函式,如果運算子的兩個運算元
1.輸出入串流<<,>>運算子多載的運算元cout與cin為iostream類別的物件,而非自定義類別的物件,因此要以自定義類別中的成員函式作為運算子的多載函式,則無法以自定義類別的物件的取用方式呼叫(cout.member_function()與cout.member_function()為錯誤格式),因此採用友誼函式作為運算子覆載函式.
第一次使用cin.get(array1 , n , 'ch')擷取字串 , 會將停止擷取字元'ch'滯留於buffer內 , 以讓下一個cin>>array2自動擷取 , 但第一次擷取結束後的enter鍵字元將被第二次的cin>>array2濾除掉而不被擷取.
cin.get(array ,size n , delimit '\n' )
delimit '\n'代表當擷取輸入字元遇到'\n',即停止擷取擷取輸入,而非代表停止擷取字串的字元為字串結束字元'\0'.