c++ - 如何检测一个类是否被多态使用?

标签 c++

假设在一个旧项目(>1M 行)中,有一个名为 Base 的类,它有两个虚函数 foobar

class Base
{
public:
    virtual void foo();
    virtual void bar();
};

class Derived: public Base
{
public:
    virtual void foo();
    virtual void bar();
};

我怀疑 Base 没有被多态使用,所以 foo/bar 不应该是虚拟的。

为了证实我的想法,我需要找出是否有这样的说法:

Base *b = new Derived;

但是如果我们在一个函数之间传递指针,就很难找到了,例如:

Base *f()
{
  ...
  Derived *d = /* ... */;
  ...
  return d;
}

有什么办法吗?

最佳答案

使 Derived 私有(private)地继承自 Base。这将防止隐式向上转换使 Base* b = new Derived; 成为编译错误。

关于c++ - 如何检测一个类是否被多态使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635009/

相关文章:

c++ - OpenCv 3d拼接全景图

c++ - 如何使用QString toUtf8和fromUtf8?

c++ - push_back() 导致程序在进入 main() 之前停止

c++ - 如何在执行期间终止(或返回)具有结构类型的自动函数?

c++ - 带有 STL 的哈希列表 - 我可以将 STL 列表中的一个项目指向另一个项目吗?

c++ - ZeroMQ中定义的smessage()方法在哪个头文件中?

c++ - 如何反汇编编译器生成的代码?

c++ - 比较 Rcpp 中的两个值而不强制转换为特定类型

c++ - 返回 C++ 对象时“没有匹配的初始化构造函数”

c++ - 以下程序的这一行如何包含特定元素的迭代器?