【发布时间】:2009-12-01 20:45:39
【问题描述】:
一个抽象基类(接口类)通常把它的所有成员函数都抽象化。但是,我有几种使用由调用接口抽象方法组成的成员函数的情况。我可以在派生但仍然抽象的类中实现它们,或者我可以将方法实现为接口类的非抽象、非虚拟方法。
在实现接口类中的方法时是否存在设计方面的问题?是不是风格不好,如果是,为什么?
静态方法也一样吗?
例如
class IFoo
{
public:
virtual ~IFoo();
virtual double calcThis( InputType p ) const = 0;
virtual double calcThat( InputType p ) const = 0;
double calcFraction( InputType p ) { return calcThis( p ) / calcThat( p ); }
static BarType bar( InputType p );
};
class MyFoo : public IFoo
{
public:
// implements IFoo
virtual double calcThis( InputType p ) const;
// implements IFoo
virtual double calcThat( InputType p ) const;
};
对
class IFoo
{
public:
virtual ~IFoo();
virtual double calcThis( InputType p ) const = 0;
virtual double calcThat( InputType p ) const = 0;
};
class FooBase : public IFoo
{
public:
virtual ~FooBase();
double calcFraction( InputType p ) { return calcThis( p ) / calcThat( p ); }
static BarType bar( InputType p );
};
class MyFoo : public FooBase
{
public:
// implements IFoo
virtual double calcThis( InputType p ) const;
// implements IFoo
virtual double calcThat( InputType p ) const;
};
【问题讨论】:
标签: c++ coding-style