相关疑难解决方法(0)

静态多态性对实现接口有意义吗?

和大家圣诞快乐!

我正在学习静态多态性,并且正在阅读Andrei Alexandrescu关于基于策略的设计的出色著作。我在代码中遇到了以下内容:我有一个接口Interface,指定Foo必须存在该方法。该接口将由class实现Impl。我有以下两种选择:

1)动态多态

class Interface {
public:
    virtual void Foo() = 0;
}

class Impl : public Interface {
public:
    void Foo() {};
}
Run Code Online (Sandbox Code Playgroud)

2)静态多态

class Impl {
{
public:
    void Foo() {};
}

template <class I>
class Interface : public I
{
public:
    void Foo() { I::Foo(); } //not actually needed
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下使用静态多态性有意义吗?与第一种方法相比,第二种方法有什么好处吗?该接口仅指定了某些方法的存在,并且其机制对于不同的实现是相同的-因此与书中描述的情况不太一样,因此我觉得我可能只是在使事情变得过于复杂。

更新:我在运行时不需要多态行为;在编译时已知正确的实现。

c++ polymorphism templates policy-based-design static-polymorphism

5
推荐指数
1
解决办法
1402
查看次数