美烦资源网

专注技术文章分享,涵盖编程教程、IT 资源与前沿资讯

C++ inline类型成员函数,有什么作用?如何定义?linux C++第20讲

inline类型的成员函数

类的成员函数也可以定义为内联(inline)函数。C++要求对一般的内联函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline,因为这些成员函数已被隐含地指定为内联函数,如:

class student //以class开头

{

private: //以下的部分是私有部分

char name[32];

char addr[32];

long long number;//以上3 行是成员变量

public: //以下部分是公有部分

student(char* pn, char* pa, long long n)

{

strcpy(name, pn);

strcpy(addr, pa);

number = n;

}

void print()

{

cout << "name = " << name << endl;

cout << "addr = " << addr << endl;

cout << "number = " << number << endl;

}

};

其中第print()函数的定义如下:

void print()

也可以写成:

inline void print()

将print() 函数显式地声明为内联函数。以上两种写法是等效的。对在类体内定义的函数,一般都省略写inline关键字,默认是inline函数。

应该注意的是:如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内联(inline)函数,调用这些成员函数的过程和调用一般函数的过程是相同的,如果想将这些成员函数指定为内联函数,应当用inline作显式声明,如:

class student //以class开头

{

private: //以下的部分是私有部分

char name[32];

char addr[32];

long long number;//以上3 行是成员变量

public: //以下部分是公有部分

student(char* pn, char* pa, long long n)

{

strcpy(name, pn);

strcpy(addr, pa);

number = n;

}

inline void print(); //声明为内联函数

};

inline void student::print() //在类外定义内联函数

{

cout << "name = " << name << endl;

cout << "addr = " << addr << endl;

cout << "number = " << number << endl;

}

将一般函数指定为内联函数的时候,只要在函数的声明或函数的定义时,对两者之一作 inline 声明即可。

注意,这样做,不利于类的接口与类的实现分离,不利于信息隐藏。虽然程序的执行效率提高了,但从软件工程质量的角度来看,这样做并不是好的办法。

所以,我们不建议直接在类内定义函数,在类内定义一个内联函数。

可以在类内声明为inline类型,然后,在类外定义。

那么,我们就可以把类的声明和类的函数定义分开,编译代码的管理!不要在一个类中,编写大量的代码,应该把类的声明和类的定义分开。

只有成员函数规模很小,而调用频率较高时,才将此成员函数指定为内联函数。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言