Ale*_*tov 56
但是类内部的内联方法怎么样?
内联函数的两种语法(inline在类定义中使用显式和定义成员函数)仅提供有关编译器内联的提示.从性能的角度来看,它们是平等的.
在类声明中定义成员函数的情况下,后者的可读性应该是您主要考虑的问题:对于具有多行实现细节的垃圾类接口来说,这真的很麻烦.因此,如果您的成员函数不止一个语句,请避免这样做:return stuff或者简单转发应该没问题,但通常不会更多.
class MyClass
{
public:
int f() const { return m_i; }
int g() const;
private:
int m_i;
};
inline int MyClass::g() const
{
return m_i;
}
// both member-functions behave equally (except for naming)
Run Code Online (Sandbox Code Playgroud)
Joh*_*ohn 23
inline在类中指定函数/过程是暗示编译器不是创建代码来调用函数并传递参数,而是将函数的内容放在调用点.
当在不必传递参数的情况下执行函数变得更有效时,它可以提高编译二进制文件的性能.它也可能对性能有害,因为重复在每个调用位置处的函数中的代码可能会导致膨胀,从而减少代码在更快的高速缓存中找到的可能性.
Jan*_*ter 19
为编译器提供内联类函数有两种选择:
(1)在类的声明中定义一个函数(在头文件中)
class Human {
public:
Human(const char* name);
Human();
// is implicit inline
void lookAt(const char* name) const {
std::cout << "I'm looking at " << name << std::endl;
}
private:
char _name[30];
};
Run Code Online (Sandbox Code Playgroud)
(2)在函数定义中明确使用inline关键字(在头文件中)
// is explicit inline
inline void lookAt(const char* name) const {
std::cout << "I'm looking at " << name << std::endl;
}
Run Code Online (Sandbox Code Playgroud)