歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中內聯函數inline的另一作用

C++中內聯函數inline的另一作用

日期:2017/3/1 10:20:06   编辑:Linux編程

內聯函數不是在調用時發生控制轉移,而是在編譯時將函數體嵌入在每一個調用處。

今天在coding時遇到多次定義一個函數而使ld返回錯誤的情況。大致過程如下:

首先,在一個頭文件中定義了一個類及其實現:

test.h:

  1. #ifndef TEST_H
  2. #define TEST_H
  3. class A{
  4. public:
  5. void fun();
  6. };
  7. void A::fun(){
  8. }
  9. #endif

然後分別有兩個文件:

a.cpp:

  1. #include"test.h"
  2. void tt()
  3. {
  4. }

b.cpp:

  1. #include<iostream>
  2. #include"test.h"
  3. using namespace std;
  4. void tt();
  5. int main()
  6. {
  7. A a;
  8. tt();
  9. return 0;
  10. }

而後,將a和b分別編譯之後就會出錯:


想了想,是由於分開後在a.o和b.o中都分別定義了A的fun()函數,因此會發生沖突。

Copyright © Linux教程網 All Rights Reserved