我真的很困惑。我正在閱讀Bjarne Stroustrup的TC++ PL(特刊,第19版 - 2010年9月)。讓我引用這本書的一部分,突出我的困惑:是一個typedef的定義嗎?
char ch;
string s;
int count = 1;
const double pi = 3.1415926535897932385;
extern int error_number;
const char* name = "Njal";
const char* season[] = { "spring", "summer", "fall", "winter" };
struct Date { int d, m, y; };
int day(Date* p) { return p->d; }
double sqrt(double);
template<class T> T abs(T a) { return a<0 ? -a : a; }
typedef complex<short> Point;
struct User;
enum Beer { Carlsberg, Tuborg, Thor };
namespace NS { int a; }
從這些例子可以看出,一個聲明可以做的不是簡單地 有名稱的類型關聯更多。大多數這些聲明也是定義;也就是說,它們也爲它們所指的名稱定義了一個實體。對於ch, 該實體是將適當的內存量用作變量 - 即將分配內存。這一天是指定的功能。對於 常數pi,它是值3.1415926535897932385。對於日期,該實體是 的一種新類型。 對於Point而言,它是複雜類型,因此Point變爲複合的 的同義詞。上述聲明的,只有這些是不是也 定義:
double sqrt(double);
extern int error_number;
struct User;
typedef complex<short> Point <-- WTF;
沒有與它下面給出的列表中以粗體衝突的句子? typedef只是一個聲明還是一個定義?這是書中的錯誤嗎?
'Bjarne的-stroustrup'是一個標籤呢? – 2011-04-18 15:31:01
看起來像是一段時間的標籤。 – 2011-04-18 16:03:43