gpt4 book ai didi

c++ - 一种在 C++ 中强制使用接口(interface)的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:51 24 4
gpt4 key购买 nike

在 C++ 中,假设我有一个实现接口(interface)类 BaseInterface 的类 Derived,其中 < strong>BaseInterface 只有纯虚函数和一个虚析构函数:

class BaseInterface
{
public:
virtual void doSomething() = 0;
~BaseInterface(){}
};

class Derived : public BaseInterface
{
public:
Derived() {}
~Derived(){}

protected:
virtual void doSomething();

private:
int x;
};

Derived 类层次结构之外的任何类都不应直接调用 Derived::doSomething(),即它只能通过 BaseInterface 类。为了执行此规则,我已将 Derived::doSomething() 保护起来。这很有效,但我正在寻找关于这种方法的赞成/反对意见。

谢谢!

最佳答案

我认为您正在寻找非虚拟接口(interface) (NVI) 模式:调用 protected 或私有(private) 虚拟 实现的 public 非虚拟接口(interface):

class BaseInterface
{
public:
virtual ~BaseInterface(){}
void doSomething() { doSomethingImpl(); }

protected:
virtual void doSomethingImpl() = 0;
};

class Derived : public BaseInterface
{
public:
Derived() {}
virtual ~Derived(){}

protected:
virtual void doSomethingImpl();

private:
int x;
};

关于c++ - 一种在 C++ 中强制使用接口(interface)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6038160/

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