题目内容

已有如下类定义:class Person {public:static Male createMale( );static Femle createFemle( );virtual ~Person( );};class Male:public Person {};class Female:public Person{};如果希望用类似的方式定义其它类,那么下面最合适的是:

A. 颜色-黑-白
B. 方向-左-右
C. 孩子-老大-老二-老三
D. 三角形的角-钝角-直角-锐角

查看答案
更多问题

描述老鼠吃水果。如果不同种类的老鼠吃不同种类的水果,有不一样的行为,例如:大老鼠吃苹果,洗完苹果后,再吃;小老鼠吃苹果,直接不吃,放弃;大老鼠吃香蕉,连皮带瓤都吃;小老鼠吃香蕉,只吃瓤;等等。那么在下面哪种情况下,只通过简单地继承和虚函数是无法适应上述要求的?

A. 老鼠只有一种,水果有香蕉和苹果两种,且香蕉只有一种,但苹果有多种
B. 老鼠只有一种,水果有香蕉、苹果等多种,但每种水果至多只有一个对象
C. 水果只有一种,老鼠有大老鼠、小老鼠等多种,但每种老鼠的最大数量限定为5个
D. 水果有多种,老鼠有大老鼠、小老鼠等多种,但每种老鼠至多只有一个对象

既然类有缺省的拷贝构造函数,那么定义虚拟拷贝构造函数一定有其特殊的目的和作用。下面的说法错误的是:

A. 拷贝构造子类对象时,使用普通拷贝构造函数必须明确指明类名,而使用虚拟拷贝构造函数则不必知道类名
B. 使用普通拷贝构造函数,拷贝不同类型的对象需要不同的访问接口,而使用虚拟拷贝构造函数,可以用一致的接口拷贝对象
C. 虚拟拷贝构造函数要求父类和子类都有一致的拷贝接口(如clone函数),但各子类的其它接口函数是可以不同的
D. 子类中定义了虚拟拷贝构造函数,那么应该禁用这个子类的拷贝构造函数,如可使用形如 SubClass(const SubClass&) = delete;的语句

class Fruit {public:virtual ~Fruit( ) {}virtual Fruit * clone( ) const = 0;//1};class Apple:public Fruit {public:virtual Apple * clone( ) const{ return new Apple(*this); }//2...//3};class Orange:public Fruit {public:virtual Orange * clone( ) const{ return new Orange(*this); }//4};下面的说法正确的是:

A. 将//2和//4中的类名Apple和Orange都改成Fruit也是可以的
B. 将//1中的virtual关键字去掉是可以的
C. 在//3处添加一个非虚的成员函数 void f(Fruit & fruit);是可以的
D. //1处的const以及子类中clone函数的const修饰都应该去掉

class Customer {public:virtual ~Customer( ) { }void buy( Car& car,CutOff * pcutoff ) {float percent = (pcutoff==nullptr?1:pcutoff->percent( ));card.reduce( car.value( ) * percent );goHome( );}/* 其它略 */private:virtual void goHome( );private:CreditCard card;};分析上边给出的Customer类定义及部分实现,针对下面给出的需求变化,说出Customer类不适应哪些?1. 增加轿车(Car)类的新子类轿跑车(Coupe),并且给Coupe类添加独特的行为-比赛(race).2. 变更折扣类(CutOff)的折扣率以及折扣的计算方法3. 更改买车(buy)的购买流程4. 更改goHome的具体方式5. 增加信用卡的新种类以及重置信用卡的最长还款期

A. 134
B. 245
C. 23
D. 35

答案查题题库