/*功能,C++ inline。可以用來取代宏定義的函數。聲明定義內嵌函式,提示編譯時間內聯——將所調用的代碼嵌入到主調函數中。注意是否內聯取決於實現——編譯器有權不實際內聯,如果它認為這是必要的或更符合預期的目標代碼品質。日期,2013年3月13日環境,ubuntu1204-gcc部落格,http://blog.csdn.net/shunqiziranhao007/article/details/8670253*/#include <iostream>using std::cout; using std::endl;#define P1 cout << endl;#define P2(X) cout << X;#define P3(X) cout << X << endl;// 普通函數inline,其實像下面這麼短小的程式,有些ide會自動inline化,如vs2010。inline void f(){P3("abc")}// inline函數模板,注意文法,inline寫在template後面template<typename T> inline void f1() {}// 錯誤: expected unqualified-id before ‘<’ token//x inline template<typename T> void f2() {}class A{public:// 在類中聲明和實現的函數會自動成為inline,這是隱式inlinevoid f() { P3("A::f()") }// 顯式說明該函數為inline,類內說明,類外定義inline void f1();void f2();};// inline可加也可不加inline void A::f1(){P3("A::f1()")}// 雖然類中沒有聲明為inline但是類外定義時可以加上inlineinline void A::f2(){P3("A::f2()")}int main(){f();P1A a;a.f();a.f1();a.f2();}