每次我读到接口时,都会提到它没有任何数据成员或实现。
但是当我看到带有接口的代码时,它们两者都有。
class IInterface
{
public:
IInterface(){}
virtual ~IInterface(){}
int getInt(){ return m_int; }
virtual void Boo() = 0;
int m_int;
};
class cInterface : public IInterface
{
public:
virtual void Boo()
{
printf( "defined in .cpp for readability\n" );
};
};
class cFoo : public cInterface
{
};
(几乎)我从来没有在源文件中看到它们,而只有标题。
这个术语的使用有多严格,如果上面不是接口,它是如何调用的?
将其用作 IInterface* 时是否反映了 cInterface/cFoo 的用法?
...
cFoo foo;
IInterface* object = &foo;
object->Boo();
...