>>506
ごく簡単な例だと、例えば簡単な html パーサを書いていて、タグの情報をクラス化するとしたとき、
インタフェイス IHtmlTag を
class IHtmlTag {
 public:
 virtual const string& get_Name() const = 0;
 virtual const HtmlAttr& get_Attributes() const = 0;
};

と定義し、実装は
class CHtmlImpl : public IHtmlTag
{
 string m_strTag;
 HtmlAttr m_attributes;

 virtual const string& get_Name() const { return m_strTag;};
 virtual const HtmlAttr& get_Attributes() const { return m_attributes;};
};

なんてしておく。
多重継承やcontainment で複数のインタフェイスを持つクラスなんかも作れる。
利点はイロイロあるけど、産業的にはクローズドソースでクラスライブラリを公開できる点が重要。