c++ - 具有与接口(interface)方法完全相同签名的静态方法的 C++ 类的优点是什么

标签 c++ static-methods virtual-functions

在实现它的类中定义与接口(interface)方法具有完全相同签名的静态方法有什么好处。

class IInterface
{
public:
  virtual void fn()=0;
}

class Impl :IInterface
{
public:
  ~Impl();
  static  void fn();
}

Impl::~Impl{
}

Impl::fn(){
 //do something
}

最佳答案

这样的static 方法没有任何优势。 static 方法不会覆盖 virtual 方法(它们始终是非static)。

事实上它有缺点,您不能实现实际的方法来覆盖基方法。因为在单个 class 中不能有相同的方法签名(一个 static 和另一个非 static)。

class Impl :IInterface
{
public :
~Impl();
staic void fn();
void fn() {} // error: invalid (can't have same signature)
};

关于c++ - 具有与接口(interface)方法完全相同签名的静态方法的 C++ 类的优点是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659328/

相关文章:

c++ - 虚函数查找的规则是什么?

c++ - 从 C++ 中的静态方法访问非静态类变量

java - 定义静态函数的位置(性能方面)重要吗?

c++ - CUDA 和模板 : specialization declaration needed?

c++ - 在 C++ 中向上转型和向下转型跳过层次结构?

java - 数组 "r"的值更新为 2?

c++ - CRTP 的替代品

c++ - 可以从纯虚函数返回引用吗?

c++ - 是否有什么阻止 C++ 优化全局变量?

c++11:为什么 std::forward 中的 static_assert 是必需的?