我是 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
,所以那里也没有变化。