C++ 类成员函数与内联函数

类定义的内联函数分为以下3种:

1. 隐式内联

类里面定义的函数隐式内联,有利于类内部实现细节的隐藏。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Person
{
public:
Person(const string &name)
{
Name = name;
}
void printName()//printName 定义在类里面是隐式内联函数
{
cout << Name << endl;
}
private:
string Name;
};

2. 在类里面显示声明,在类外面定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Person
{
public:
Person(const string &name)
{
Name = name;
}
inline void printName();//成员被函数前加了inline是显式内联函数
//在类里面显式声明
private:
string Name;
};
void Person::printName()
{//在类外面定义
cout << Name << endl;
}

3. “追加”内联

表示在类里面没有显式声明,在类外显示定义了内联。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Person
{
public:
Person(const string &name)
{
Name = name;
}
void printName();
//在类里面没有显式声明
private:
string Name;
};
inline void Person::printName()//成员被函数前加了inline是显式内联函数
{//在类外面显式定义
cout << Name << endl;
}

4. 常见的成员函数不是内联函数

定义不在类里面,且声明和定义都没有inline

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Person
{
public:
Person(const string &name)
{
Name = name;
}
void printName();
//在类里面没有显式声明
private:
string Name;
};
void Person::printName()//不是内联函数
{//在类外面也没有显式定义
cout << Name << endl;
}

注:内联函数仅仅是对编译器的内联建议,编译器是否觉得采取你的建议取决于函数是否符合内联的有利条件。如何函数体非常大,那么编译器将忽略函数的内联声明,而将内联函数作为普通函数处理。

参考文献

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

C++内联函数

相关文献

C语言宏定义、宏函数、内置宏与常用宏

Author: wnxy
Link: https://wnxy.github.io/2022/05/10/cpp_class_mem_func_and_inline_func/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.