Monday, April 2, 2007

Four type of inline member function.

Inline 的四种写法:

 

//Case 1: 在函数体内实现其定义,虽然没有显示的声明inline关键字,但是这些函数被自动作为inline函数处理,

//被成为"在类定义中定义的内联(inline)函数".

class List

{

public:

            void PrintMe()

            {

                        cout << "List";

            }

};

 

//Case 2: 在函数体内实现其定义,并显示的声明inline关键字,当然,这个inline关键字完全是冗余的。

//被成为"在类定义中定义的内联(inline)函数".

class List

{

public:

            inline void PrintMe()

            {

                        cout << "List";

            }

};

 

//Case 3: 在类体外定义的成员函数不是inline的,

//但是如果显示的在类体内中的声明上加上inline关键字,则其也成为inline函数。

class List

{

public:

            void PrintMe();

};

 

//必须在List.h

inline void List::PrintMe()

{

            cout << "List";

}

 

//List.h

//Case 4: 在类体外定义的成员函数不是inline的,

//但是如果在类体外出现的函数定义上显示的使用inline关键字,则其也成为inline函数。

class List

{

public:

            inline void PrintMe();

};

 

//必须在List.h中,并且这里函数前可加inline,也可不加。

void List::PrintMe()

{

            cout << "List";

}

 

//Notice:由于inline函数必须在调用它的每个文本文件中被定义,

//所以没有在类体中定义的inline成员函数必须被放在类定义出现的.h文件中,并且在类定义之后。

//否则compilor会报错!

No comments: