单选题

    现有货币类、电子支付类,如下:class Currency { //货币public:virtual ~Currency( );voidexchange( );/* 其它略 */private:Country * mpCountry;};class EPay { //电子支付public:void pay( );/* 其它略 */private:Bank * mpBank;};小王定义数字货币类(Decp)时,考虑到Decp必须具备货币的全部功能,又有电子支付的全部功能,即Decp既可以当做货币用,也可以当做一种电子支付使用。现采用了多重继承的方式复用已定义的类,如下:class Decp:public Currency, public EPay { /* 略 */};但是,小王希望Decp类有更好的适应性,特别是对于EPay类,虽然现在没有子类,但未来一定会派生其它子类。那么最合理的定义方式是哪种?

    A. class Decp:public Currency {public:voidexchange( );voidpay( ) { mpEPay->pay( ); }/* 构造、析构、拷贝、赋值等略*/private:EPay * mpEpay;};
    B. class Decp:public EPay {public:voidexchange( ){ mpCurency->exchange( ); }voidpay( );/* 构造、析构、拷贝、赋值等略*/private:Currency * mpCurency;};
    C. class IEPay {pubic:virtual ~IEPay( ) { }virtual void pay( ) = 0;};class EPay:public IEPay {/*略*/};class Decp:public Currency , public IEPay {public:voidexchange( );voidpay( ) { mpEPay->pay( ); }/* 构造、析构、拷贝、赋值等略*/private:IEPay * mpEpay;};
    D. class IEPay {pubic:virtual ~IEPay( ) { }virtual void pay( ) = 0;};class EPay:public IEPay {/*略*/};class Decp:public Currency , public IEPay {public:voidexchange( );voidpay( );};

    火星搜题