C++中内联函数inline的另一作用


内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。今天在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()函数,因此会发生冲突。

  • 1
  • 2
  • 下一页

相关内容