我是 C++ 的新手,在探索 C++11 概念时,我遇到了“using”关键字和继承之间的关系。 我的代码由基类和派生派生类组成。基类有一个名为 foo() 的成员函数。在派生类中,我利用“using”关键字使基类的 foo() 函数可访问。
class Base {
public:
void foo() { std::cout << "Base::foo()" << std::endl; }
};
class Derived : public Base {
public:
using Base::foo;
};
int main() {
Derived obj;
obj.foo();
return 0;
}
但是,即使没有“using”关键字(通过注释 using Base::foo; 行),程序编译和运行也不会出现错误。
我对这里的“using”关键字是否是强制的感到困惑。您能否解释一下在哪些场景中使用“using”关键字至关重要以及如果省略它我可能会遇到哪些问题?
提前感谢您的回答!
我尝试通过删除“using”关键字来运行代码,并且代码执行顺利。但是,当我向ChatGPT询问此问题时,它表示如果没有“using”关键字,代码将不正确,并建议我使用它.
ChatGPT(再次)错了。你是对的,这里没有必要。完全没有歧义,
Derived
仅继承自Base
。然而,C++ 支持多重继承,在这种情况下,您可能需要选择特定的 foo
。
此外,
Derived::foo
像Base::foo
一样是公开的,所以那里也没有变化。