以class_name(初始值1,初始值2,...初始值n)設定物件初始值格式,因須標示何者class使用的初始值,故class_name不可省略.
拷貝建構元格式class_name win1=win2;因win2會在之前預先宣告所屬類別,故class_name 可省略.
以class_name(初始值1,初始值2,...初始值n)設定物件初始值格式,因須標示何者class使用的初始值,故class_name不可省略.
拷貝建構元格式class_name win1=win2;因win2會在之前預先宣告所屬類別,故class_name 可省略.
拷貝物件是以一個既存在物件建立一個新物件,會同時執行copy constructor,但建立一個物件的參照物件僅是建立一個既存在物件的
別名物件,並非為建立新物件.故不會執行copy constructor
成員函式傳回物件,可再利用物件取得成員函式或class成員變數操作(如同經由檔案夾以取得檔案,但變數本身即是檔案等級的資料,故無法(win1.compare(win2)).get_id()再進行進一步的操作.但成員函式傳回的物件為何無法執行物件本身地址的操作呢???
&(win1.compare(win2)).
成員函式僅能傳回一個變數,要同時傳回多個class成員變數,使用cwin(初始值1,初始值2,初始值3,...)傳回以物件接收(不可以參照接收),已設定物件初始值.
若傳回為物件,可以傳回物件的參照物件格式,給物件接收,執行物件拷貝,但因傳回者為以初始值為參數的class函式呼叫格式(以物件初始值為參數),非建立參照物件拷貝格式,因此無法以物件的參照物件格式傳回.
class cwin
{
當要以一個既存在的物件以建立一個新物件的資料成員,須使用拷貝建構元以拷貝資料成員.
當以物件為參數呼叫函式,且函式以物件做為接收的引數,其呼叫函式的物件參數與以物件做為函式的接收引數關係,就如同是以一個既存在的物件以建立一個新物件的關係,故以物件呼叫以物件為接收的函式需呼叫拷貝建構元.
取win1,win2中,width與height 較大者設定給win3.
cwin(&) operator+(cwin &win) //以class(cwin)傳回或者以cwin('e',w,h)格式設定初始值,不可以參照接收?????.
字元陣列:array[5]={'w','a','t','e','r'}; //結尾不須保留字串結束符'\0'
若要採各別輸入單個字元以設定陣列元素方式,以輸入字串,則需於字串結尾自行加入字串結束符'\0'
以成員函式為遞增(減)運算子多載函式,因遞增(減)的為class的資料成員,故遞增(減)運算子多載成員函式執行結束後,其內的資料成員的遞增(減)值將保留,並不會如一般函式內的變數值一般,僅在函式內有效,因此兩次結果將累加.
物件不是一個具體的值,故傳遞物件僅能以參照接收,而不能以值接收.???
或是物件傳遞以參照接收可以修改目的物件並返回以同時改變來源物件(雙向改變).??????????????????????????
若為單運算元的運算子覆載,則成員運算符函式括弧內參數列為空白,若為雙運算元的運算子覆載,則成員運算符函式括弧內參數列則只有一個參數.
c++編譯器根據參數的個數和類型,來決定呼叫哪個覆載函式,因此可以為同一個運算符定義幾個覆載函式以進行不同的操作.
停止擷取字元,字串結束字元與enter鍵字元.
1.當兩次的擷取字串均使用相同的停止擷取字元'ch' ,且第一次以cin.get(array , n , 'ch')擷取字串後,其停止擷取字元'ch'將滯留在buffer內,以自動被第二次所擷取 ,因兩次均使用相同的停止擷取字元'ch' , 故第二次將同樣判定為停止擷取字元,而不再擷取字元 ,且因不再繼續擷取字元 ,故自動再將字串結束字元附加上.而enter鍵因在整個輸入字串最後一個字元(故同時也在停止擷取字元'ch'之後),故亦不擷取.使得第二次的儲存內容成為空字元.