inline类型的成员函数
Posted LC编程开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inline类型的成员函数相关的知识,希望对你有一定的参考价值。
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类型,然后,在类外定义。
那么,我们就可以把类的声明和类的函数定义分开,编译代码的管理!不要在一个类中,编写大量的代码,应该把类的声明和类的定义分开。
只有成员函数规模很小,而调用频率较高时,才将此成员函数指定为内联函数。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
以上是关于inline类型的成员函数的主要内容,如果未能解决你的问题,请参考以下文章