面向对象程序设计(C++)复习题 联系客服

发布时间 : 星期四 文章面向对象程序设计(C++)复习题更新完毕开始阅读c03e8d7eb90d6c85ec3ac67a

15.面向对象方法构造的系统,其基本单位是对象 。

16.生成一个派生类对象时,先调用基类的构造函数,然后调用派生类的构造函数。 17.AA operator +(AA x )表示为运算符+重载。

18.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上类名 和两个冒号分隔符。

19.若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的*this就代表了类外的x对象。

20.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为~AB(){}。 21.类的成员按访问权限可分为三类: 公有 、私有、保护。 22.在一个类中定义复制构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块 地址 。

23. 假定 AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为10。

24. 假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句为const int aa;。 25.假定AB为一个类,则该类的复制构造函数的函数头为AB(AB & )。

26.假定AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在该类的析构函数中应该包含有一条delete pa语句。

27. 静态成员函数只能访问类的静态数据成员,非静态成员函数 访问类的非静态数据成员。 28. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上 friend 的限定。

29. 一个单目运算符作为类的成员函数重载时有0个参数;如果作为友元函数重载,则有1个参数。

30. 若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上基类名和类区分符。

31. 若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以virtual 的方式直接继承它。

32. 引进虚基类的根本目的是为了消除二义性。

33. 在每个成员函数中,隐含的第一个参数的参数名为this指针。

三 写出下列程序的运行结果

1. (1)

#include

struct ab {

char a[5]; float b; };

void main() { ab x={\

cout<

}

2. (2)

#include

struct ab

{char a ; float b; };

void f(ab &y) { y.a='W'; y.b=90.5; }

void main() { ab x={'L',89.5}; f(x);

cout<

3. (3)

#include

#include class A { char a; public:

A(char *s) {

a=new char[strlen(s)+1]; strcpy(a,s);

cout<

cout<<\ } };

void main()

{ A x(\ A y( \ } 4. (4)

#include

int n=0; class A { int a; public:

A(int aa=0) {a=aa; n++;} ~A() {n--;cout<

void main()

{ A a; a.show();

{ A x[2]; x[1].show(); }

a.show(); } 5. (5)

#include class A

{ int a,b; public: A( )

{a=b=0;cout<

{a=aa;b=bb; cout<

void main() { A x,y(10,5);}

6. (6 )

#include class BB { int a,b; public:

BB(int i=0,int j=1) { a=i; b=j;} BB operator +(BB c) { BB d;

d.a=a + c.a*10; d.b=b+c.b*10; return d;}

BB operator -(BB c) { BB d;

d.a=a * c.a; d.b=b*c.b; return d;} void show()

{cout<<'('<

void main()

{ BB x(2,6) , y(5, 5),z; z=x+y; z.show(); z=x-y; z.show(); } 7. (7)

#include class EX { intx,y; public:

EX(int i=0,int j=1) { x=i; y=j;} EX operator * (EX z)

{ EX d;

d.x=x *z.x; d.y=y*z.y; return d;}

EX operator /(EX c) { EX d;

d.x=x-c.x; d.y=y-c.y; return d;} void show()

{cout<<'('<

void main()

{ EX a(30,10) , b(2,5),c; c=a*b;

c.show(); c=a/b; c.show(); }

8. (8)

#include class Point{ int x,y; public:

Point(){x=1;y=1;} ~Point(){cout<<\};

void main() {

Point a; }

9. (9)

#include #include int count=0; class Point

{ int x,y; public:

Point(){ x=1; y=1;count++;} ~Point(){count--;} };

void display() {

cout <<\}

void main()