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 正确的)。
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 正确的)。