假设在一个旧项目(>1M 行)中,有一个名为 Base
的类,它有两个虚函数 foo
和 bar
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/