在 C++ 中,inline 关键字不仅可以用在普通函数中,还可以用在类的成员函数中。当类的成员函数在类定义内部直接实现时,编译器会默认将其视为内联函数。如果成员函数在类外部定义,则需要显式使用 inline 关键字来建议编译器将其内联。
类中使用 inline 的场景
-
隐式内联:
- 在类定义内部直接实现的成员函数,默认是内联的。
- 例如:
class MyClass { public: void print() { // 隐式内联 std::cout << "Hello, World!" << std::endl; } };
-
显式内联:
- 如果成员函数在类外部定义,可以使用
inline关键字显式声明为内联函数。 - 例如:
class MyClass { public: void print(); // 声明 }; inline void MyClass::print() { // 显式内联 std::cout << "Hello, World!" << std::endl; }
- 如果成员函数在类外部定义,可以使用
示例代码
以下是一个完整的示例,展示了如何在类中使用 inline:
#include <iostream>
class Math {
public:
// 隐式内联:在类内部直接实现的函数
int add(int a, int b) {
return a + b;
}
// 声明一个成员函数,稍后在类外部定义
int multiply(int a, int b);
};
// 显式内联:在类外部定义的成员函数
inline int Math::multiply(int a, int b) {
return a * b;
}
int main() {
Math math;
std::cout << "Addition: " << math.add(5, 3) << std::endl; // 调用隐式内联函数
std::cout << "Multiplication: " << math.multiply(5, 3) << std::endl; // 调用显式内联函数
return 0;
}
输出结果
Addition: 8
Multiplication: 15
关键点
-
隐式内联:
- 在类定义内部直接实现的成员函数,默认是内联的。
- 适合小型、简单的函数。
-
显式内联:
- 在类外部定义的成员函数,如果需要内联,必须显式使用
inline关键字。 - 通常将内联函数的定义放在头文件中,以便在多个编译单元中使用。
- 在类外部定义的成员函数,如果需要内联,必须显式使用
-
适用场景:
- 小型函数,尤其是频繁调用的函数。
- 避免对复杂函数(如递归函数或带有循环的函数)使用内联。
注意事项
- 编译器决定:
inline只是一个建议,编译器可能会忽略。 - 代码膨胀:过度使用内联可能导致代码体积增大,反而降低性能。
- 头文件中的定义:如果内联函数在类外部定义,通常需要将其放在头文件中,以便在多个编译单元中共享。
总结
在类中使用 inline 关键字可以提高小型成员函数的性能。隐式内联适用于类内部直接实现的函数,而显式内联适用于类外部定义的函数。
899

被折叠的 条评论
为什么被折叠?



