Re: [語法] class 成員與 const 的問題
看板C_and_CPP (C/C++)作者loveflames (咕啾咕啾魔法陣)時間16年前 (2010/06/12 05:06)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章