註冊登錄
伊莉討論區返回首頁

thelord2009的個人空間http://www473.eyny.com/?5788411[收藏][複製][分享][RSS]

日誌

程式語言都是【=的右邊】設定給【=的左邊】

已有 592 次閱讀2023-1-4 01:21 AM

以下參考C++教學手冊第三版 洪維恩著 旗標出版股份有限公司

頁數13-41~13-44

假設win1是一個CWin類別型別物件,CWin win1
CWin &ref = win1
代表=的右邊win1,設定給=的左邊&ref,ref由於有&,所以是一個參照變數參照變數型別要和CWin類別型別物件相同

Class CWin
{
public:
void compare(CWin *win)
由於引數是*win是一個指標,所以必須傳位址給它,由於在main函式是要傳入CWin的物件指標,所以這裡引數*win的型別也是用CWin
{
if(this->area()>win->area()
this代表呼叫compare函數的物件,因為this是一個指標(參考頁數12-22),因此是用->存取成員area()。引數*win是一個指標,所以也是用->存取成員area()
}
};

int main(void)
{
CWin win1('A',70,80);
宣告一個CWin win1物件,()裡頭依序由左至右有一些參數
CWin win2('B',60,90);
宣告一個CWin win2物件,()裡頭依序由左至右有一些參數
CWin *ptr1=&win1;
&win1是win1的位址,=的右邊設定給=的左邊,設定給指標變數ptr1,宣告指標變數是*ptr1,但是存放位址的是ptr1
CWin *ptr2=&win2;
&win2是win2的位址,=的右邊設定給=的左邊,設定給指標變數ptr2,宣告指標變數是*ptr2,但是存放位址的是ptr2
ptr1->compare(ptr2);
ptr1是指標所以是->compare(),上方已經講了由於引數是*win是一個指標,所以必須傳位址給它,因此compare(ptr2),存放位址的是ptr2
}

Class CWin
{
public:
void compare(CWin &win)
{
if(this->area()>win.area())
引數&win是參照變數,參照變數應該可以接收物件或任何變數,但是目前沒看過接收指標的範例作法,參照變數win用點運算子.存取成員area()
}
};

int main(void)
{
CWin win1('A',70,80);
宣告一個CWin win1物件,()裡頭依序由左至右有一些參數
CWin win2('B',60,90);
宣告一個CWin win2物件,()裡頭依序由左至右有一些參數
win1.compare(win2);
win1是一個物件,所以是用點運算子.存取成員compare()。由於上方的void compare(CWin &win)是&win而不是*win,就不需要CWin *ptr2=&win2;ptr1->compare(ptr2);傳位址進去
}

頁數10-20~10-21
程式語言都是=的右邊設定給=的左邊

int i=30,*ptr;
整數值30設定給int變數i,宣告指標變數*ptr
ptr=&i;
&i是i的位址,設定給指標ptr存放,宣告指標變數是*ptr,存放位址是ptr

int i=15;
int &ref=i;

在宣告參照變數&ref時就必須設定初值,做初始化的動作參照變數&ref和i的型別必須相同都是int
所以可能i必須有個值才行
至於上方講的&win是參照變數,參照變數應該可以接收物件,類別class的物件在宣告時就會經由類別class的預設建構式自動初始化了

路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

facelistdoodle 塗鴉板

您需要登錄後才可以評論 登錄 | 註冊
驗證問答 換一個

Archiver|手機版|廣告|聯絡我們|廣告查詢|廠商合作|伊莉

GMT+8, 2024-5-10 11:33 AM

回頂部