Re: [語法] class 成員與 const 的問題

看板C_and_CPP (C/C++)作者 (咕啾咕啾魔法陣)時間16年前 (2010/06/12 05:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
上一篇牽涉到data member初始化 以及const的用法 所以打算回一篇 同時看看我是不是有理解錯誤的部份 範例程式: #include<iostream> #include<string> using namespace std; int i=1; struct bbb{ void foo(){ // ^^^^^^^^^^ //若改成void foo() const //則不能修改bbb的data member(雖然這個例子沒改) //const的bbb物件也只能呼叫有加const的成員函式 cout<<"foo\n"; } }b; struct aaa{ aaa():v(v3){ // ^^^^^ //v這種做法叫initialization list,是正港的初始化,一開始的值為v3 //這樣做的原因是為了確認哪一種初始比較早 v2=i+v; // ^^^^^^ // 這種叫做賦值,strcpy雖然沒有等號,但意思也是差不多 } bbb * abc(){ // ^^^^^^^^^ //上面若改成const bbb * abc()則會出錯 //因為下面接受回傳的k2型態不同 return &b; } int v; int v2; static const int v3=2; //只要是static const literal type就可直接定義 //int、float...這種都算literal type(記得還包含某種class) //這個是最早初始的data member }; int main(){ aaa k; bbb * k2=k.abc(); k2->foo(); printf("v:%d v2:%d v3:%d\n",k.v,k.v2,k.v3); } -- C++ hello world標準寫法 http://nopaste.csie.org/fee97 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.226.149
文章代碼(AID): #1C4gKzm9 (C_and_CPP)
文章代碼(AID): #1C4gKzm9 (C_and_CPP)