为什么在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

语法允许,因为它是一个函数定义,并没有额外的措辞禁止它。