如何从成员函数中检测实例是否为const?

car*_*rlo 2 c++ const

我想编写一个成员函数来检测实例化对象是否为const.

举一个简单的例子,我们可以考虑以下类定义

class Foo{
  public:
    void constnessChecker(){
      bool isConst;
      // MORE CODE GOES HERE...
      if (isConst) {
        std::cout << "This instance is const! << std::endl;
      } else {
        std::cout << "This instance is not const! << std::endl;
      }
    }
};
Run Code Online (Sandbox Code Playgroud)

和以下代码

int main(){
  Foo foo1;
  Foo const foo2;
  foo1.constnessChecker();
  foo2.constnessChecker();
}
Run Code Online (Sandbox Code Playgroud)

哪个应该产生

This instance is not const!
This instance is const!
Run Code Online (Sandbox Code Playgroud)

这可能吗?

jua*_*nza 10

提供constnon-const重载:

class Foo
{
  public:
    void constnessChecker(){
      std::cout << "This instance is not const\n";
    }
    void constnessChecker() const {
      std::cout << "This instance is const\n";
    }

....
};
Run Code Online (Sandbox Code Playgroud)