2002级C++面向对象程序设计试题A-计算机学院2003冬天-参考答案

2019-04-21 20:05

2002级C++面向对象程序设计试题(A卷)

(满分:100分)

一、单项选择(每题1分,共10分)

1. D 2. D 3. B 4. C 5. C 6. B 7. B 8. A

9. A 答案可能有误,我认为应该是D 10. A

二、

1. 错误, private的成员不能被其派生类的成员函数访问。 2. 正确。

3. 错误,返回值类型不作为依据。

4. 错误,构造函数在私有或保护权限修饰下时是反例。

5. 错误, public继承方式下的基类类型的指针都可以指向其派生类对象。 6. 错误,可通过Base类中访问其x的方法见解访问到。 7. 正确。

8. 错误,继承方式中用virtual 修饰的是。

9. 错误,静态说明的对象初始化时,其构造函数的执行可能有结果输出。 10. 正确,顺序与列表顺序无关。

二、回答下列各题(共20分) 1.

继承方式\\访问权限 Public protected private Public 可访问,相当于public 可访问,相当于protected 可访问,相当于private Protected 可访问,相当于protected 可访问,相当于protected 可访问,相当于private private 不可访问 不可访问 不可访问 2. 不带参数的构造函数、拷贝构造函数、析构函数、赋值运算,还可以有相关的new、delete运算

等。

3. a1与a2的地址值是否相等。

4. 让A与B均从同一个类X派生,元素类型是X*或X&的树组可存放A及B的对象地址或引用。 5. 只能为成员函数的,如:赋值运算;只能为全局函数的,如:插入运算符<<;均可的,如:+运

算。

6. (1)基类中无不带参数的构造函数;(2)类中有常量成员;(3)类中有引用成员。

四、

(1) Derived& operator=(const Derived& aD)

{

Base::operator=(aD); y = aD.y; return *this;

}

(2) Derived(const Derived& aD)

{

operator=(aD); }

(3) const修饰符的作用是使实际参数既可以是变量,又可以是常量。使用引用的目的是避免拷贝,

避免无限递归循环调用。

(4) 有指针或引用类型的数据成员时。

五、 B::f B A D D::f ~D ~A ~B 六、

Number=3,7,10 Number=14,9,1 Sum=54 Sum=54

七、考查以虚函数形式定义的运算符重载,各类中实现相似,略。 class A { private: int va; public: A(int n):va(n) {} virtual int get_va(){return va;} virtual int get_vb(){return 0;} virtual int get_vc(){return 0;} virtual A& operator+(A& obj){va+=obj.get_va();return *this;}

void printf(){cout << get_va() <<','<

class B: public A { private: int vb; public: B(int n1,int n2):A(n1),vb(n2){} virtual int get_vb(){return vb;} virtual A& operator+(A& obj){ A::operator+(obj); vb+=obj.get_vb();return *this;} };

class C: public B { private: int vc; public: C(int n1,int n2,int n3):B(n1,n2),vc(n3){} virtual int get_vc(){return vc;} virtual A& operator+(A& obj){B::operator+(obj);vc+=obj.get_vc();return *this;} }; 八、

class D: public B1

{ public:

D(const &B2 aB2): m_B2(aB2); void func( ) const { f( ); m_b2.g( ); } private:

const B2& m_B2;

}; 九、

class Pair

{ public:

Pair(L*, R*);

R* getR( ) { reuturn aR; } L* getL( ) { return aL;} private:

R* aR; L* aL; };

class Dictionary {

public:

Dictionary( ) { lines=0; } void addARow(Pair * aPair)

{ //先查是否有重复的,代码类似下面getRBy,代码略 Rows[lines++] = aPair }

R* getRBy(L* aL)

{ R* pR;

int found = 0; int i = 0; while (!found)

{ if ( i >= line) break;

if (rows[i]->getL( ) == aL)

//或者if(rows[i]->getL( )->getVal( ) == aL->getVal( )

{ found = 1; pR = new R(*(rows[i]->getR( ))); } else i++;

}

if (found)

return pR;

else

return 0;

}

L* getLBy(R* aR){ 代码与上类似,略}

private:

Pair* Rows[200]; int lines;

};


2002级C++面向对象程序设计试题A-计算机学院2003冬天-参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学语文第二册第一单元教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: