模拟销售员销售产品,需定义Saler类。其中在销售过程中,销售员有一定几率人品爆发,会以2倍原价的价格销售产品。那么下面定义,哪种最合适?
A. class Saler {public:int sale( const Product & product);};class Product {public:bool isLucky( ) const;};
B. class Saler {public:virtual ~Saler( );virtual int sale( const Product & product);};class LuckySaler:public Saler {public:virtual ~LuckySaler( );virtual int sale( const Product & product);};
C. class Saler {public:int sale( const Product & product);};class LuckySaler {public:int sale( const Product & product);};
D. class Saler {public:int sale( const Product & product);private:bool isLucky( ) const;};
查看答案
现有货币类、电子支付类,如下: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( );};
当类A的成员函数需要传递T类型的参数时,常采用传引用的形式,如 void A::f( T& t);而不是传值对象形式,如 void A::f( T t );那么,下面给出的说明此问题的理由,错误的是:
A. 传值对象需要类T必须有拷贝构造函数
B. 传引用可以利用类T的动态多态性,增加类A的可复用性
C. 传值对象程序效率低,传引用程序效率高
D. 传值对象不要求类T有虚函数,但类T在大多数情况下是有虚函数的,因此常见传引用
已有Parent类,那么定义Parent类的子类Child时,错误的说法是:
A. Child类可以组合Parent类,同时又依赖Parent类
B. Child类可以依赖Parent类,同时又普通关联Parent类
Child类可以组合Parent类,同时又普通关联Parent类
D. Child类可以组合或依赖或普通关联Parent类,但不能同时存在两种或两种以上的关系
现欲开发一个基于人工智能的医学图像辅助诊断程序,其中的人工智能部分交给阿里巴巴的达摩院负责,而你只负责诊断程序的人工交互界面部分。若界面部分需要Analyzer类,并假设由你定义并实现,那么下面最合理的是:
A. class Analyzer {public:Analyzer( );void parse( Picture & pic) {mparser->parse( pic );}float getResult( ) {return mparser->result( );}}private:Parser * mparser;};
B. class Analyzer {public:Analyzer( );float parse( Picture & pic) {PNGPicture png = mparser->convertToPng(pic);return mparser->parseResult( png );}private:Parser * mparser;};
C. class Analyzer {public:void parse(Parser & psr, Picture & pic) {psr.parse( pic );}float getResult(Parser & psr ) {return psr.result( );}};
D. class Analyzer {public:float parse(Parser & psr, Picture & pic) {return psr.parseResult( pic );}};