問題描述:類中成員函數(shù)缺省默認(rèn)是內(nèi)聯(lián)的,如果在類定義時(shí)就在類內(nèi)給出函數(shù)定義,那當(dāng)然最好。如果在類中未給出成員函數(shù)定義,而又想內(nèi)聯(lián)該函數(shù)的話,那在類外要加上 inline,否則就認(rèn)為不是內(nèi)聯(lián)的。內(nèi)聯(lián)函數(shù)的inline要加在函數(shù)前面,不可以加在聲明前面。
class A{  public:void Foo(int x, int y) { } // 自動(dòng)地成為內(nèi)聯(lián)函數(shù)}//正確寫法:// 頭文件class A{  public:  void Foo(int x, int y);}// 定義文件inline void A::Foo(int x, int y){} //錯(cuò)誤寫法:inline void Foo(int x, int y); // inline 僅與函數(shù)聲明放在一起void Foo(int x, int y){}1. 內(nèi)聯(lián)函數(shù)作用:為了解決一些頻繁調(diào)用的小函數(shù)大量消耗棧空間(棧內(nèi)存)的問題,特別的引入了 inline 修飾符,表示為內(nèi)聯(lián)函數(shù)。
例子:
#include <stdio.h>//函數(shù)定義為inline即:內(nèi)聯(lián)函數(shù)inline char* dbtest(int a) {  return (i % 2 > 0) ? "奇" : "偶";}  int main(){  int i = 0;  for (i=1; i < 100; i++) {    printf("i:%d  奇偶性:%s /n", i, dbtest(i));    }}內(nèi)聯(lián)函數(shù)是在程序編譯的時(shí)候替換的方式加入程序中的。
2. 內(nèi)聯(lián)函數(shù)使用的限制:
inline 的使用是有所限制的,inline 只適合涵數(shù)體內(nèi)代碼簡(jiǎn)單的涵數(shù)使用,不能包含復(fù)雜的結(jié)構(gòu)控制語句例如 while、switch,并且不能內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(即,自己內(nèi)部還調(diào)用自己的函數(shù))。
代碼較長(zhǎng),內(nèi)部出現(xiàn)循環(huán)不適合使用內(nèi)聯(lián)函數(shù)。
3. 內(nèi)聯(lián)函數(shù)只是一個(gè)對(duì)編譯器的建議,具體實(shí)不實(shí)現(xiàn)看編譯器認(rèn)為函數(shù)復(fù)不復(fù)雜。
4.內(nèi)聯(lián)函數(shù)最好放在頭文件中。
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的學(xué)習(xí)和對(duì)武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答