看板 C_and_CPP 關於我們 聯絡資訊
上一篇牽涉到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