上一篇牽涉到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