为什么在class里面定义的成员函数还有inline说明符?
Why there is still a inline specifier when member fuctions define inside class?
C++ ISO 标准规定:在 class 定义中定义的函数是内联函数。
但是看代码如下:leveldb-skiplist
class template <typename Key, class Comparator>
class SkipList{
public:
/*
...
*/
private:
inline int GetMaxHeight() const {
return max_height_.load(std::memory_order_relaxed);
}
};
在 class.
中定义 GetMaxHeight 时,仍然有一个显式的内联说明符
所以,我想知道为什么在 class 中定义函数时我们仍然需要显式内联?
您不需要它。这是多余的。就像在 override
.
的声明中重复 virtual
语法允许,因为它是一个函数定义,并没有额外的措辞禁止它。
C++ ISO 标准规定:在 class 定义中定义的函数是内联函数。
但是看代码如下:leveldb-skiplist
class template <typename Key, class Comparator>
class SkipList{
public:
/*
...
*/
private:
inline int GetMaxHeight() const {
return max_height_.load(std::memory_order_relaxed);
}
};
在 class.
中定义 GetMaxHeight 时,仍然有一个显式的内联说明符所以,我想知道为什么在 class 中定义函数时我们仍然需要显式内联?
您不需要它。这是多余的。就像在 override
.
virtual
语法允许,因为它是一个函数定义,并没有额外的措辞禁止它。