C&C++ 内联函数 #12
JAX1024Dev
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
前言
C++ 支持内联函数,其目的是为了提高函数执行效率。
相对于内联函数,宏代码最大的问题就是容易出错,预处理器在复制宏代码时常常产生让人意想不到的边际效应。对于 C++ 而言,宏代码的另一个问题是无法操作类的私有数据成员。
内联函数工作流程:对于任何内联函数,编译器在符号表里放入函数的声明(包括名字、参数类型、返回值类型)。在调用处编译器会进行类型安全检查或者进行自动类型转换。如果正常,内联函数的代码会直接替换函数调用,于是省去了函数调用的开销。
在 C++ 中使用内联函数代替所有的宏代码,但是
assert例外,assret不是函数,而是宏。函数定义必须包含
inline关键字,至于函数 declaration 可以包含,可以不包含。inline是一种用于实现的关键字,而不是一种用于声明的关键字,声明可以不包含, 用户没必要、也不需要知道函数是否内联。**定义 definite 在类中的成员函数会被自动地转化为内联函数。**但这不是一个好的编程习惯。
慎用内联:
内联以代码膨胀为代价,省去函数调用的开销,从而提高执行效率。以下情况不宜使用内联:
Beta Was this translation helpful? Give feedback.
All reactions