gpt4 book ai didi

c++ - 我对 c++ 纯虚函数和接口(interface)的误解

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:23 25 4
gpt4 key购买 nike

我喜欢在一些类中定义良好的接口(interface),为此我在每个类都需要实现的抽象类中创建了纯虚函数。
但是我面临的问题是我可以实例化这些类,所以我必须创建另一个继承接口(interface)类的类,而所有其他类都需要从这个基类继承。下面是示例代码:

界面

class Interface
{
virtual std::string getName() = 0;
}

class Base : public Interface
{
virtual std::string getName(return std::string("Base") ;)
}

class A : public Base
{
std::string getName(return std::string("A") ;)

}

class B : public Base
{
std::string getName(return std::string("B") ;)

}

所有这一切让我可以在代码中为 A 和 B 设置相同的类型。
我可以只使用 Interface 类而不使用 Base 类吗?
像这样:

class A : public Interface
{
std::string getName(return std::string("A") ;)

}

最佳答案

不,他们没有。所有从接口(interface)继承(直接或间接)的类都必须在继承树的某处实现纯函数才能被实例化。

因此您可以在基类或顶级类中实现该方法。

另外,你的语法有问题:

class A : public Interface
{
std::string getName()
{
return std::string("A");
}
};

即使上面的代码不是从 Base 派生的,它也应该可以工作,因为您从 Interface 实现了纯虚方法。

建议 - 使您的 getName 方法成为 const

关于c++ - 我对 c++ 纯虚函数和接口(interface)的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com