C語言問題關於解構元~

以下這個程式我想問的是為什麼win1.show();這樣可以輸出

而不行用win1.show_member();我之前看的程式就可以用了

char i='D'是指什麼呢 還有電腦怎麼了解Main window=title呢

還有cout<<"sizeof(win1)="<<sizeof(win1)<<endl;為什麼輸出的結果是21不太了解~

#include<iostream>

#include<cstdlib>

using namespace std;

class CWin

{

private:

char id,title[20];

public:

CWin(char i='D', char *text="Default window"):id(i)

{

strcpy(title,text);

}

~CWin()

{

cout<<"解構元被呼叫了,Win"<<this->id<<"被銷毀了.."<<endl;

system("pause");

}

void show(void)

{

cout<<"window "<< id <<": "<< title << endl;

}

};

int main(void)

{

CWin win1('A',"Main window");

CWin win2('B');

win1.show();

win2.show();

cout<<"sizeof(win1)="<<sizeof(win1)<<endl;

cout<<"sizeof(win2)="<<sizeof(win2)<<endl;

system("pause");

return 0;

}

已更新項目:

這個 constructor 有 default 參數 , 如果你用 CWin win;

來建立物件這個物件的 id 會是 'D' , title 是 "Default window"

寫 CWin win('X',"XWindow"); id 就會用你寫的 'X' 來初始化

就不會使用 default 值 , "XWindow" 會 copy 給 title .

我還是聽不懂什麼叫default 參數還有D的由來

跟最後那幾句

有比較簡單的說法嗎 麻煩了

2 個已更新項目:

我剛剛看了以後有點了解了

那有什麼辦法可以把B改成預設的D嗎

謝謝了

1 個解答

評分
  • 鳳琳
    Lv 5
    1 0 年前
    最佳解答

    你這個 CWin class 又沒有 show_member() 這個 member function.

    只有 show().

    //

    //

    CWin(char i='D', char *text="Default window"):id(i)

    {

    strcpy(title,text);

    }

    這個 constructor 有 default 參數 , 如果你用 CWin win;

    來建立物件這個物件的 id 會是 'D' , title 是 "Default window"

    寫 CWin win('X',"XWindow"); id 就會用你寫的 'X' 來初始化

    就不會使用 default 值 , "XWindow" 會 copy 給 title .

    sizeof(win1) 是 21 是因為 char id,title[20]; 總共 1+20 = 21 (bytes)

    2007-01-08 01:23:47 補充:

    就是你不指定的話它會有預設的值

    id = 'D' , title[] = "Default window";

    2007-01-09 01:42:21 補充:

    既然寫 CWin win2('B'); 就表示不想使用預設的參數

    如果想使它變成 'D' 就直接寫 CWin win2;

還有問題?馬上發問,尋求解答。