类中的内联函数
类中除了可定义普通函数外,也可定义内联函数,定义形式也是在成员函数的返回值类型前添加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;
}