面向对象与可视化编程

面向对象与可视化编程
面向对象与可视化编程

………………………………………………………………………………………………………………

试卷编号拟题教研室(或教师)签名教研室主任签名

………………………………………………………………………………………………………………

课程名称(含档次)面向对象与可视化编程课程代号

专业层次(本、专)本考试方式(开、闭卷)闭

一、判断题(每题2分,共20分)

1、单目后缀运算符++重载为类成员函数时与前缀++相比需要增加一个无用参数以示区别

如:X operator++(int){...} (对)

2、C++中的动态多态性是通过函数重载和运算符重载来实现的。(错)

3、一旦类中的成员函数声明为虚函数,该成员函数在派生类的继承体系中(被重写时不管

是否声明为虚函数)就永远为虚函数了。(对)

4、因为构造函数和析构函数都不能被继承和重写,所以他们都不能定义为虚函数(错)

5、模板函数中的形式参数只能是类属参数不能有普通类型参数(错)

6、基类对象及其派生类对象可以互相赋值即基类对象可以赋值给派生类对象,同样,派生

类对象也可赋值给基类对象(错)

7、类中的Protected成员可以在类域外(如main()函数内)被直接使用(错)

8、拥有纯虚函数的类既不能定义指针和引用也不能定义对象实例(错)

9、派生类的构造函数只负责直接基类的初始化,但在虚拟继承中要负责间接虚基类(如果

有间接虚基类)的初始化(对)

10、类的对象成员必须采用构造函数初始化列表方式进行初始化(对)

二、选择题(每空2分,共20分)

1、下面哪种类类型定义时不能指定任何基类,定义完成后也不能作为其他类类型的基类 ( B )

A) 标准C++的类类型B)托管C++中的值类类型

C)托管C++中引用类类型D)所有类类型

2、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值 ( A )

A) 0 B) 4 C) 8 D) 6

3、下列运算符中,不能重载的是

( C )

A) && B)!= C). D)->

4、关于静态成员的描述中,(B )是错误的。

A)静态成员可分为静态数据成员和静态成员函数。

B)静态数据成员定义后必须在类体内进行初始化。

C)静态数据成员初始化不使用其构造函数。

D)静态数据成员函数中不能直接引用非静态成员。

5、下面程序的运行结果是( C )

#define A 10+10

#define B A-A

#include int main(){ const int C=10+10;

const int D=C-C;

std::cout<<"B="<

};

class B

{ int b, k;

public:

B(int i,int a)

{b=i; k=a; cout<<“constructing B:”<

}

};

class C

{ A a1,a2; B b1,b2;

public:C(int i1,int i2,int i3,int i4, inti5,int i6):b1(i1,i5),a1(i2),

b2(i3,i6),a2(i4){ }

};

void main()

{ C x(1,2,3,4,5,6);}

A)constructing B:1 5 B) constructing A:2 constructing A:2 constructing A:4 constructing B:3 6 constructing B:1 5 constructing A:4 constructing B:3 6 C) constructing A:2 D) constructing B:1 5 constructing B:1 5 constructing B:3 6

constructing B:3 6 constructing A:2

constructing A:4 constructing B:4

8、下面程序的运行结果是 ( A )

#include

using namespace std;

class A

{ private:

int x,y;

public:

A(int i,int j) {x=i;y=j;}

int getX(){return x;}

int getY(){return y;}

friend class B; //声明类B是类A的友元类};

class B { private:

int z;

public:

int add(A a){return a.x+a.y+z;} int mul(A a){return a.x*a.y*z;} B(int i=0) {z=i;}

};

void main()

{ A a(2,3);

B b(4);

cout<

cout<

}

A)924 B) 9 24 C)2 3 4 D)5 20

9、下面程序的运行结果是()

#include

using namespace std;

class B

{ public:

B(){cout<<"constructing B"<

{ D(){ cout<<"constructing D"<

void main()

{ D d; }

A)constructing B B)constructing B C)destructing B D)destructing D constructing D constructing D destructing D destructing B destructing D destructing B constructing B constructing B destructing B destructing D constructing D constructing D 10、下面程序的运行结果是()

#include

using namespace std;

class B

{ public:

virtual void f(){ cout << "B::f"<

class D : public B

{ public: void f(){ cout << "D::f"<

void main()

{ D d;

B *pB = &d, &rB=d, b;

pB->f();

rB.f();

}

A)B::f B) D::f C) B::f D)程序运行出错 D::f D::f B::f

三、阅读程序写出程序运行结果(每题8分,共32分)

1、

#include using namespace std;

class Sample

{

int n;

public:

Sample(int i){n=i;}

friend int add(Sample &s1,Sample &s2); };

int add(Sample &s1,Sample &s2) {

return s1.n+s2.n;

}

void main()

{

Sample s1(10),s2(20); cout<

2、

#include

using namespace std;

class A

{

public:

A();

A(int i,int j);

~A(){cout<

private:

int a,b;

}; A::A()

{a=b=10;cout<<"Default constructor.\n";} A::A(int i,int j)

{ a=i,b=j;cout<<"Constructor.\n";}

void A::print()

{cout<<"a="<

void main()

{

A m,n(15,18);

m.print();

n.print();

}

3、

#include

using namespace std;

class Base

{

public:

Base(int i) { cout << i; }

~Base () { }

};

class Base1: virtual public Base

{

public:

Base1(int i, int j=0) : Base(j) { cout << i; } ~Base1() {}

};

class Base2: virtual public Base

{ public: Base2(int i, int j=0) : Base(j) { cout << i; } ~Base2() { }

};

class Derived : public Base2, public Base1 {

public:

Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a) { cout << b; }

private:

Base2 mem2;

Base1 mem1;

};

void main()

{ Derived objD (1, 2, 3, 4); }

4、

#include using namespace std; class Test

{ public:

Test(){}

~Test(){cout<<'#';} };

int main()

{ Test temp[2], *pTemp[2];

}

return 0;

四、程序编写题(共28分)

建立一个CPoint类,该类有两个私有成员变量x,y,表示点的坐标。有一个构造函数用于设置坐标,还有两个公有的成员函数:分别用于获取x和y 的坐标。由CPoint派生出CCircle类,派生类CCircle 增加一个私有成员变量用于表示半径,并用派生类的构造函数设置半径,同时增加三个成员函数:一个用于获取半径,另两个分别用于获取圆外接正方形左上角的x坐标和y坐标。

相关主题
相关文档
最新文档