您好,登錄后才能下訂單哦!
問題描述:類中成員函數缺省默認是內聯的,如果在類定義時就在類內給出函數定義,那當然最好。如果在類中未給出成員函數定義,而又想內聯該函數的話,那在類外要加上 inline,否則就認為不是內聯的。內聯函數的inline要加在函數前面,不可以加在聲明前面。
class A { public:void Foo(int x, int y) { } // 自動地成為內聯函數 } //正確寫法: // 頭文件 class A { public: void Foo(int x, int y); } // 定義文件 inline void A::Foo(int x, int y){} //錯誤寫法: inline void Foo(int x, int y); // inline 僅與函數聲明放在一起 void Foo(int x, int y){}
1. 內聯函數作用:為了解決一些頻繁調用的小函數大量消耗棧空間(棧內存)的問題,特別的引入了 inline 修飾符,表示為內聯函數。
例子:
#include <stdio.h> //函數定義為inline即:內聯函數 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)); } }
內聯函數是在程序編譯的時候替換的方式加入程序中的。
2. 內聯函數使用的限制:
inline 的使用是有所限制的,inline 只適合涵數體內代碼簡單的涵數使用,不能包含復雜的結構控制語句例如 while、switch,并且不能內聯函數本身不能是直接遞歸函數(即,自己內部還調用自己的函數)。
代碼較長,內部出現循環不適合使用內聯函數。
3. 內聯函數只是一個對編譯器的建議,具體實不實現看編譯器認為函數復不復雜。
4.內聯函數最好放在頭文件中。
以上就是本次介紹的全部知識點內容,感謝大家的學習和對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。