class Test {

      bool isVal() const {
          return isVal;
      }

  private:

      bool isVal;
};

在编译此文件时说



虽然同样适用于Java
class Test {

  private boolean isVal;

  public boolean isVal() {
      return isVal;
  }

}

为什么在C++中而不在Java中会发生编译错误?

最佳答案

因为C++不是Java。您可以使用成员(member)的地址:

&Test::isVal

因此,除了可以重载成员函数之外,不能使两个成员具有相同的名称。即使您可以通过某种方式消除歧义,下一个问题也将在其他地方出现。

在C++中,包括我在内的许多人通常都专门 call 数据成员,例如在名称前加上m。这样可以避免该问题:
class Test {
public:
    bool IsVal() const { return mIsVal; }
private:
    bool mIsVal;
};

10-06 08:31