C++类里面的哪些成员函数是内联函数?

来源:互联网 发布:acm编程大赛题目 编辑:程序博客网 时间:2024/05/14 17:15

类定义的内联函数分为以下3种:
1.隐式内联

class Person{public:Person(const string &name){Name = name;}    void printName()//printName 定义在类里面是隐式内联函数{cout << Name << endl;}private:string Name;};
2.显式内联
分为在2种情况:
1)在类里面显式声明定义:

class Person{public:Person(const string &name){Name = name;}    inline void printName()//成员被函数前加了inline是显式内联函数{//在类里面显式声明、定义cout << Name << endl;}private:string Name;};
2)在类里面显示声明,在类外面定义
class Person{public:Person(const string &name){Name = name;}    inline void printName();//成员被函数前加了inline是显式内联函数//在类里面显式声明private:string Name;};void Person::printName(){//在类外面定义cout << Name << endl;}
3.“追加”内联
表示在类里面没有显式声明,在类外显示定义了内联。
class Person{public:Person(const string &name){Name = name;}    void printName();//在类里面没有显式声明private:string Name;};inline void Person::printName()//成员被函数前加了inline是显式内联函数{//在类外面显式定义cout << Name << endl;}
4.第四种常见的成员函数不是内联函数
定义不再类里面,且声明和定义都没有inline
class Person{public:Person(const string &name){Name = name;}    void printName();//在类里面没有显式声明private:string Name;};void Person::printName()//不是内联函数{//在类外面也没有显式定义cout << Name << endl;}
总结,第四种一定不是内联函数,前三种可能是内联函数,具体是不是还要由编译器判定

0 0