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类型的成员函数的主要内容,如果未能解决你的问题,请参考以下文章

inline 关键字对类成员模板函数的影响?

C++特性总结

类_类的定义

C++ (P70—)

inline&friend&操作符重载

C/C++类和对象类中常用的关键字总结