一、聲明(declaration):用于向程序表明變量的類(lèi)型和名字,是用來(lái)將一個(gè)object、function、class或template的類(lèi)型和名字告訴編譯器。由2部分組成:類(lèi)型 + 標(biāo)示符,標(biāo)示符可以包含字符*、[ ]和(),表明這個(gè)名稱(chēng)是類(lèi)型的指針、數(shù)組或者返回類(lèi)型的函數(shù)
職稱(chēng)英語(yǔ)代考 職稱(chēng)英語(yǔ)答案
聲明并不帶有細(xì)節(jié)信息;
定義也是一種聲明;
extern關(guān)鍵字可用來(lái)聲明變量而不定義,只是說(shuō)明變量定義在程序的其他地方;
變量可以聲明多次,但只能定義一次
例子:
char *pc; // 類(lèi)型是pc,標(biāo)示符是*pc,表明*pc是一個(gè)char.
extern float x; // 對(duì)象聲明
int func(double num); //函數(shù)聲明
class Person; //類(lèi)聲明
template<class T>
class SmartPointer; //模板聲明雅思答案 雅思代考
解讀復(fù)雜聲明的一種方法,遵循"聲明模仿使用"的原則逐步分解聲明。
例如:char * (*pfpc)();
* (*pfpc)(); // 是一個(gè)char
(*pfpc)(); // 是一個(gè)指向char的指針
(*pfpc); // 是一個(gè)返回char類(lèi)型指針的函數(shù)
pfpc; // 是一個(gè)指向返回char類(lèi)型指針的函數(shù)的指針
二、定義(definition):是用來(lái)將細(xì)節(jié)信息提供給編譯器。
對(duì)于object而言,定義是編譯器為它分配內(nèi)存空間托福代考 托福答案
對(duì)于function或funciton template而言,定義是提供函數(shù)體;
對(duì)于class或class template而言,定義是列出該class或template的所有成員;
例子:
float x; //對(duì)象定義
//函數(shù)定義
int func(double num) {
int t = static_cast<int>(num);
return t;
}
//類(lèi)定義
class Person {
public:
Person();
~Person();
String getName() const;
void setName(String name);
…
};
//模板定義
template<class T>
class SmartPointer {
public:
SmartPointer(T *p = 0);
~SmartPointer();
T * operator->() const;
T& operator*() const;
…
};
備注:如果聲明中有初始化,那么它其實(shí)是定義。
例如: externdouble pi = 0;
此時(shí)pi是定義,所以如果這樣用的話會(huì)出錯(cuò):
extern double pi = 0;
extern double pi = 1; // 2個(gè)extern且初始化