在類(lèi)中定義的函數(shù)一般規(guī)模較小唆姐,而系統(tǒng)調(diào)用函數(shù)的過(guò)程所花費(fèi)的時(shí)間開(kāi)銷(xiāo)相對(duì)是比較大的。調(diào)用一個(gè)函數(shù)的時(shí)間遠(yuǎn)遠(yuǎn)大于小規(guī)模函數(shù)體中的全部語(yǔ)句的執(zhí)行時(shí)間险掀。
為了減少時(shí)間開(kāi)銷(xiāo)嗜价,如果在類(lèi)體中定義的成員函數(shù)不包括循環(huán)等控制結(jié)構(gòu),C++系統(tǒng)就會(huì)把它們作為內(nèi)置函數(shù)處理默怨。
- 對(duì)于一般的函數(shù)讯榕,需要顯式使用
inline
關(guān)鍵字聲明,但對(duì)于類(lèi)內(nèi)定義的成員函數(shù)匙睹,可以省略inline
愚屁,因?yàn)檫@些成員函數(shù)已被隱含地指定為內(nèi)置函數(shù)。
class Student {
public:
void display() {
cout << age << " " << num << " " << name << endl;
}
private:
int num;
int age;
string name;
};
兩段代碼對(duì)display
函數(shù)的定義等效痕檬。
class Student {
public:
inline void display() {
cout << age << " " << num << " " << name << endl;
}
};
-
對(duì)于類(lèi)體外定義的成員函數(shù)
系統(tǒng)不會(huì)把它默認(rèn)為內(nèi)置函數(shù)霎槐,調(diào)用這些成員函數(shù)和調(diào)用一般函數(shù)一樣∶蚊眨可以使用inline
顯示聲明這些成員函數(shù)為內(nèi)置函數(shù)丘跌。class Student { public: void display(); private: int num; int age; string name; }; inline void Student::display() { cout << num << age << name << endl; }
但是,如果要這樣做唁桩,必須讓類(lèi)的聲明和實(shí)現(xiàn)在同一個(gè)源文件中闭树。一般不這樣做,除非這個(gè)類(lèi)外定義的函數(shù)的使用頻率較高荒澡,才指定為內(nèi)置函數(shù)报辱。