C++中变量和方法可以同名吗?

Can a variable and a method have the same name in C++?

class Controller {

 bool isBackendActive();
 void anotherMethodDoingSomething();

}

我能否声明一个与方法同名的布尔变量,以便我可以像这样使用它:

void Controller::anotherMethodDoingSomething() {
    bool isBackendActive = isBackendActive();
    if (aBoolean && isBackendActive) {
     ...
     LOG("bla" + isBackendActive)
    }
    else if (!isBackendActive) {
     ...
    }
    else 
     ...
    }
    

非常感谢您的提前投入。

您可以看到编译错误信息:

 error: 'isBackendActive' cannot be used as a function
   43 |         bool isBackendActive = isBackendActive( );
      |                                ~~~~~~~~~~~~~~~^~~

这不可能。

您可以使用 snake_case 重命名您的函数以使其不同:

bool is_backend_active( );

如果您不想这样做,那么:

bool isBackendActive = this->isBackendActive( );

使用this 将为编译器提供足够的关于您想要的信息。它告诉编译器您想要访问 class Controller 的成员(变量或函数),而不是像 bool isBackendActive;

这样的局部变量

不用讨论优点(或缺点),是的,您可以很容易地消除成员与局部变量的歧义。

bool const isBackendActive = this->isBackendActive();

bool const isBackendActive = Controller::isBackendActive();

会起作用(而且可能是 const 正确的)。