提问人:Syrlax 提问时间:8/24/2023 更新时间:8/24/2023 访问量:41
关于在 C++ 中“使用”关键字与继承和构造函数的必要性的混淆 11
Confusion about the necessity of "using" keyword with inheritance and constructors in C++11
问:
我是学习C++的新手,在探索C++11概念时,我遇到了“using”关键字和继承之间的关系。 我的代码由基类和派生派生类组成。Base 类有一个名为 foo() 的成员函数。在 Derived 类中,我利用 “using” 关键字使 Base 类的 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”关键字来运行代码,并且代码执行顺利。但是,当我向 ChatGPT 提出这个问题时,它表示没有“using”关键字的代码是不正确的,并建议我使用它。
答:
0赞
MSalters
8/24/2023
#1
ChatGPT (再次)错了。你是对的,这里没有必要。完全没有歧义,只继承自 .但是,C++ 支持多重继承,在这种情况下,您可能需要选择特定的 .Derived
Base
foo
此外,是公开的,所以那里也没有变化。Derived::foo
Base::foo
评论