学科分类
目录

类中的内联函数

类中除了可定义普通函数外,也可定义内联函数,定义形式也是在成员函数的返回值类型前添加inline关键字,具体形式如下所示:

class 类名
{
public:
   inline 函数返回值类型 函数名(参数表)
   {
   }
};

通常在类内定义的函数默认为内联函数。

接下来通过一个案例来说明类中内联函数的定义及使用,如例1所示。

例1

 1    #include <iostream>
 2    using namespace std;
 3    
 4    class Test                                         //定义Test类
 5    {
 6    public:
 7        Test():m_nX(10){}
 8        inline void print();                        //声明内联函数
 9        void display(int y);
 10    private:
 11        int m_nX;
 12    };
 13    void Test::print()                               //定义内联函数
 14    {
 15        cout << m_nX << endl;
 16    }
 17    void Test::display(int y)
 18    {
 19        cout << m_nX * y << endl;
 20    }
 21    int main()
 22    {
 23        Test obj;                                     //定义类对象
 24        obj.display(10);
 25        obj.print();                                 //调用内联函数
 26        system("pause");
 27        return 0;
 28    }

运行结果如图1所示。

图1 例1运行结果

例1中print()成员函数是内联函数,函数的定义和调用与普通的成员函数没有区别。

脚下留心:类的内联函数应与类的定义一起存放在头文件中

若要完成一个项目,类的定义及类中内联函数的定义应放在.h头文件中,类中普通成员函数的实现放在相应的.cpp文件中。如下面的代码,在test.h中定义类及内联函数print(),在test.cpp中定义类中普通成员函数display()。

/*test.h*/                                                  //test.h文件
#ifndef TEST_H  
#define TEST_H  
#include <iostream>  
using namespace std;  

class Test                                                  //定义类
{  
public:  
    Test():m_nX(10){}  
    inline void print();                                  //声明内联函数
    void display (int y);  
private:  
    int m_nX;  
};  
void Test::print()                                       //定义内联成员函数
{  
    cout << m_nX << endl;  
} 
#endif

/*test.cpp*/                                              //实现类中成员函数的.cpp文件
#include <iostream>  
#include "test.h"  
using namespace std;

void Test::display(int y)                             //定义普通成员函数
{  
    cout << m_nX * y << endl;  
}
点击此处
隐藏目录