【发布时间】:2013-03-27 11:55:31
【问题描述】:
我通常将纯虚函数用于我的代码所需的那些方法,以使其正常工作。因此,我创建接口,然后其他用户实现他们的派生类。派生类只有这些虚函数是公共的,而一些额外的方法应该实现为私有的,因为我的代码没有调用它们。 我不知道这是否可以被视为 OOP 的良好实践(是否有任何设计模式?)。 无论如何,我的问题是: 用户可以重载纯虚函数吗?
即
class Base
{
public:
Base();
virtual ~Base();
virtual void foo(int,double)=0;
};
class Derived:
public Base
{
private:
// methods
public:
Derived();
virtual ~Derived();
virtual void foo(int, double, double); //this doesn't work
};
解决方案可能是:
virtual void foo(int,double,double=0)=0;
在基类中,但它非常有限。你有什么想法?
【问题讨论】:
-
函数重载代表一个不同的API。一个抽象基类代表一个一致的 API。所以不,这没有意义。
-
你的例子是不是缺少
class Derived : Base? -
@nonsensical :对,我刚刚编辑过。谢谢
标签: c++ oop design-patterns overloading pure-virtual