文档库 最新最全的文档下载
当前位置:文档库 › 面向对象程序设计试题集

面向对象程序设计试题集

面向对象程序设计试题集
面向对象程序设计试题集

一、填空题(每空2分,共20分)

1.设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_ _,b值为。

2.在派生类的成员中有公有成员、、、四类成员。

3.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。

class Sample{

public:Sample(int data=0);

Private:int data;

};

Sample::Sample(int data){

4.面向对象程序设计的机制提供了重复利用程序资源的一种途径。

5.继承发生在利用现有类派生新类时,其中现有类称为,或父类;派生的新类

称为,或。

6.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

7.已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为

i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a

中元素为2,3,4,4。请将语句补充完整:

for(int i=0;i

8.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中

的,共同行为被描述为类中的。

9.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。

class Sample{

public:

Sample(int data=0);

Private:

int data; };

Sample::Sample(int data){

}

10.实现运行时多态,要使用函数。

11.设A为test类的对象且赋有初值,则语句test B(A); 表示。

12.在MyClass 类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完

整。

MyClass::operator=(const MyClass rhs)

{

if(this=&rhs) return *this;

value=rhs. value;

return *this; }

13.C++语言中的每条基本语句以 ________作为结束符,每条复合语句以________ 作为

结束符。

14.若p指针指向字符串“ABCDEFGHIJKL”,则语句cout<<*(p+5);的输出结果是

________。

15.当一个函数或一个类希望能够直接访问另一个类中的非公用成员时,应该将该函数

声名为另一个类的________或________。

16.设px是指向一个类动态对象的指针变量,则执行“delete px”语句时,将自动调

用该类的_______函数。

17.C++中没有字符串类型,字符串是通过________来表示的,每一个字符串都有一个结尾字符________。

18.使用const 语句定义一个标识符常量时,则必须对它同时进行________。

19.类test的析构函数名是。

20.建立对象时,为节省内存,系统只给_______分配内存。

21.类中的数据和成员函数默认访问类型为。

22.当建立一个新对象时,程序自动调用_______________。

23.在C++中,函数的参数有两种传递方式,它们是值传递和________。

24.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

25.循环语句:for(int i=50; i>20; i-=2) cout<

运行时循环体的执行次数是

26.任何类中允许有三种访问权限的数据,这三种访问权限分别是public 、、

27.类是用户定义的类型,具有类类型的变量称为。当建立一个新对象时,程序自动调用。

28.利用成员函数对二元运算符重载,其左操作数为,右操作数为。

29.C++将类继承分为和两种。

30.派生类可以定义其_______________中不具备的数据和操作。

31.有如下类定义:

class Sample{

public: Sample(); ~Sample();

private: static int date;};

将静态数据成员data初始化为0的语句是。

32.在保护继承方式下,基类的公有和保护成员成为派生类中的成员。

33.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

34.类test的析构函数名是。

35.在保护继承关系下,基类的公有成员和保护成员将成为派生类中的成员。

36.类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。

37.在派生类的成员中有私有成员、、四类成员。

38.在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。

39.在C语言中,编程的单位是在C++语言中,编程的单位是。

40.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

41.面向对象程序设计的机制提供了重复利用程序资源的一种途径。

42.非成员函数应声明为类的才能访问这个类的private成员。

43.派生新类的过程一般包括、、三个步骤。

44.C++程序的头文件和源程序文件扩展名分别为和。

45.循环语句:for(int i=50; i>20; i-=2) cout<

运行时循环体的执行次数是

46.类中构造函数有个,析构函数有个。

47.有如下类定义:

class Sample{

public:

Sample();

~Sample();

private:

static int date;};

将静态数据成员data初始化为0的语句是。

48.假定p所指对象的值为25,p+1所指对象的值为46,则执行“(*p)++;”语句后,p 所指对象的值为。

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

50.若需要把一个函数“void F( );”定义为一个类AB的友元函数,则应在类AB的定义中加入一条语句:。

51.若要把类外定义的成员函数规定为内联函数,则必须把________关键字放到函数原型或函数头的前面。

52..为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上________关键字。

53.程序段i=5;j=0;j=++i+j;输出结果为j= 。

54.类定义中,既包含数据成员,也包含________成员。

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

56.假定一个类对象数组为A[N],当离开它的作用域时,系统自动调用该类析构函数的次数为________。

57.已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i-1 的单元,其中1≤i<n。例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a 中元素为2,3,4,4。请将语句补充完整:

for(int i=0;i

58.是指对已有的运算符赋予多重含义。

59.带有的类称为抽象类,抽象类的特征是不能声明一个抽象类的,但可以声明一个抽象类的指针或引用。

60.若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

61.设A为test类的对象且赋有初值,则语句test B(A); 表示。

62.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;若要访问其他成员变量,需要通过函数或函数。

63.是指同样的消息被不同类型的对象接收时导致不同的行为。

64.在继承机制下,当对象消亡时,编译系统先执行的析构函数,然后才执行派生类中子对象类的析构函数,最后执行的析构函数。

65.类中构造函数有个,析构函数有个。

66.循环语句:for(int i=50; i>20; i-=2) cout<

运行时循环体的执行次数是

67.类是用户定义的类型,具有类类型的变量称为。当建立一个新对象时,程序自动调用。

68.有如下类定义:

class Sample{

public: Sample(); ~Sample();

private: static int date;};

将静态数据成员data初始化为0的语句是。

69.继承发生在利用现有类派生新类时,其中现有类称为,或父类;新类称为,或子类。

70.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为的成员;

若要访问其他成员变量,需要通过函数或函数。

71.是指同样的消息被不同类型的对象接收时导致不同的行为。

二、单项选择题(每小题2分,共20分)

类中定义的成员默认为()访问属性。

A.public

B. private

C. protected

D. friend

如果一个函数无返回值,定义时它的函数类型应是()。

A.任意B.int C.void D.无

下面的函数声明中,()是“void BC(int a,int b);”的重载函数。

A.int BC(int x,int y); B.void BC(int a,char b);

C.float BC(int a,int b,int c=0); D.int BC(int a,int b=0);

与C语言printf(“Hello word\n”) ;语句功能相同的C++语句是()。

A.cout>>”Hello word\n”

B.cin>>” Hello word\n”

C. cout<<” Hello word\n”

D.cin<<” Hello word\n”

假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相

加结果,则该成员函数的声明语句为()。

A. AB operator+(AB & a , AB & b)

B. AB operator+(AB & a)

C. operator+(AB a)

D. AB & operator+( )

以下不正确的语句是( c )。

A.if(x>y);

B.if(x=y)&&(x!=0)x+=y;

C.if(x!=y)cin>>x;else cin>>y;

D.if(x

int x=-1;

do

{x=x*x;}

while(!x);

下列说法正确的是( c )。

A.是死循环B.循环执行两次

C.循环执行一次D.有语法错误

下面函数()的表示方法说明它使用对象的引用作为参数。

A. test(pt *p)

B.test(pt p)

C.test(pt &p)

D.test(const P)

下面叙述不正确的是()。

A.基类的保护成员在派生类中仍然是保护的

B.基类的保护成员在公有派生类中仍然是保护的

C.基类的保护成员在私有派生类中是私有的

D.对基类成员的访问必须是无两义性

下列运算符中,()运算符在C++中不能重载。

A. ?:

B. +

C. -

D.〈=

在C++中,打开一个文件就是将这个文件与一个(a )建立关联;关闭一个文件就是

取消这种关联。

A. 流

B. 类

C. 结构

D. 对象

对while、do…while循环结构,下面说法正确的是( b )。

A.只是表达形式不同

B.do…while结构中的语句至少执行一次

C.while结构中的语句至少执行一次

D.条件成立时,它们有可能一次也不执行

关于函数的调用下面不正确的是()。

A.由于程序总是从主函数开始,所以函数的调用总是在主函数和其他函数之间进行

B.函数的调用可以在任意函数之间进行,只要有需要

C.一个函数可以自己调用自己

D.函数返回时可以不必带返回值,这时函数在定义时其类型应用void表示

关于函数的声明和定义正确的是()。

A.函数的声明是必须的,只有这样才能保证编译系统对调用表达式和函数之间的参数进行检测,以确保参数的传递正确

B.函数的定义和声明可以合二为一,可以只有函数定义即可

C.函数在声明时,其参数标识符可省略,但参数的类型、个数与顺序不能省略

D.函数的存储类型为外部型,所以可以在其他函数中被调用,它在定义时象其他外部变量一样,可以在其他函数内定义

用于类中虚成员函数说明的关键字是( )。

A.public

B.virtual

C. protected

D. private

有如下程序段:

int i=5;

while (int i=0) { cout<<"*"; i--;}

运行时输出“*”的个数是()

A. 0

B.1

C. 5

D. 无穷

运算符重载时不需要保持的性质是( c )

A. 操作数个数

B.操作数类型

C. 优先级

D.结合性

有如下类定义和变量定义:

class A {

public:

A() { data=0;}

~A() {}

int GetData() const { return data;}

void SetData(int n) { data=n;}

private:

int data;[

};

const A a;

A b;

下列函数调用中错误的是()

A. a.GetData();

B.a.SetData(10);

C.b.GetData();

D. b.SetData(10);

对类的构造函数和析构函数描述正确的是()

A. 构造函数可以重载,析构函数不能重载;

B. 构造函数不能重载,析构函数可以重载;

C. 构造函数可以重载,析构函数也可以重载;

D. 构造函数不能重载,析构函数也不能重载;

下列有关类的说法不正确的是()。

A.对象是类的一个实例

B.任何一个对象只能属于一个具体的类

C.一个类只能有一个对象

D.类与对象的关系和数据类型与变量的关系相似

()的功能是对象进行初始化。

A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数

关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内

B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用

D.友元类中的所有成员函数都是友元函数

为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权

限定义为()。

A.public

B. protected

C.private

D. static

下面对静态数据成员的描述中,正确的是( c )。

A.静态数据成员是类的所有对象共享的数据

B.类的每一个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

下列表达方式正确的是()。

A.class P{ B.class P{

public:public:

int x=15;int x;

void show(){cout<

};}

C.class P{ D. class P{

int f; public:

};int a;

f=25;void Seta (int x) {a=x;}

以下叙述中不正确的是( ):

A.一个类的所有对象都有各自的数据成员,它们共享函数成员;

B. 在一个类中可以声明另一个类的对象作为它的数据成员;

C. 类与对象的关系和数据类型与变量的关系相似;

D. 一个对象可以属于多个类。

对于一个功能不太复杂,并且要求加快执行速度,选用(c )合适

A.内置函数B.重载函数C.递归调用D.嵌套调用

Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( c )

Sample a[2], *p = new Sample;

A.0

B. 1

C. 2

D.3

已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则( )

A.FA必须定义在FB之前

B.FB必须定义在FA之前

C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

下列有关运算符函数的描述中,错误的是( )

A.运算符函数的名称总是以operator为前缀

B.运算符函数的参数可以是对象

C.运算符函数只能定义为类的成员函数

D.在表达式中使用重载的运算符相当于调用运算符重载函数

下面描述中,正确的是()。

A.virtual可以用来声明虚函数

B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C.既使基类的构造函数没有参数,派生类也必须建立构造函数

D.静态数据成员可以通过成员初始化列表来初始化

下列对基类和派生类关系的描述中,错误的是()。

A.派生类是基类的具体化

B.派生类是基类的子集

C.派生类是基类定义的延续

D.基类是派生类的抽象

C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是()。

A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数

C.规定函数说明符必须用原型 D.引进了类和对象的概念

下列表示引用的方法中,()是正确的。

已知:int k=1000;

A.int &x=k;B.char &y;C.int &z=1000;D.float &t=&k;

下面对于友元函数描述正确的是()。

A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数

C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员

假定AB为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数

的次数为()。

A.3

B.4

C.6

D.9

以下不属于构造函数特征的是( )

A. 构造函数名与类名相同

B. 构造函数可以重载

C. 构造函数可以设置默认参数

D. 构造函数必须指定函数类型

下列定义中,X是一个类, ()是定义指向对象数组的指针p。

A.X *p[4] B.X (*p)[4] C.( X*) p[4] D.X *p[]

假定X为一个类,则该类的复制构造函数的声明语句为()。

A.My Class(My Class x) B.My Class&(My Class x)

C.My Class(My Class &x) D.My Class(My Class *x)

以下正确的说法是()。

A.实参和其对应的形参各占用独立的存储单元。

B.实参和其对应的形参共占用一个存储单元。

C.只有当实参和与其对应的形参同名时才共占用存储单元。

D.形参是虚拟的,不占用存储单元。

下列关于多态性的描述,错误的是()。

A.C++语言的多态性分为编译时的多态性和运行时的多态性

B.编译时的多态性可通过函数重载实现

C.运行时的多态性可通过模板实现

D.实现运行时多态性的机制称为动态绑定

对C++编译器区分重载函数无任何意义的信息是( )

A.参数类型

B.参数个数

C.返回值类型

D..参数顺序

关于new运算符的下列描述中,()是错误的。

A.它可以用来动态创建对象和对象数组

B.使用它创建对象或对象数组,可以使用运算符DELETE删除

C.使用它创建对象时要调用构造函数

D.使用它调用对象数组时不许指定初始值

如果一个类至少有一个纯虚函数,那么就称该类为()。

A.抽象类B.派生类C.纯基类D.以上都不对有如下程序:

#include

using namespace std;

class A{

public:

virtual void f() {cout<<1;}

void g() {cout<<2;} };

class B: public A{

public: virtual void f() {cout<<3;}

void g() {cout<<4;} };

void show(A &a) {a.f(); a.g();}

int main() {

B b; show(b); return 0; }

运行时的输出结果是()

A.12

B.34

C.14

D.32

下列虚基类的声明中,正确的是()

A. class virtual B:public A

B. virtual class B:public A

C. class B:public A virtual

D. class B: virtual public A

派生类的对象对它的基类成员中()是可以访问的。

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

已知数组arr的定义如下:

int arr[5] = {1,2,3,4,5};

下列语句中输出结果不是2的是( )

A.cout << *arr+1 <

B.cout << *(arr+1)<

C.cout << arr[1] <

D.cout << *arr <

下列运算符中,()运算符在C++中不能重载。

A.?: B.[] C.new D.&&

有如下程序:

#include

using namespace std;

class A{

public:

virtual void f() {cout<<1;}

void g() {cout<<2;}

};

class B: public A{

public: virtual void f() {cout<<3;}

void g() {cout<<4;} };

void show(A &a) {a.f(); a.g();}

int main() {

B b;

show(b);

return 0; }

运行时的输出结果是()

A.12 B.34 C.14 D.32

有如下程序段:

int i=4; int j=1;

int main() {

int i=8,j=i;

cout<

}

运行时的输出结果是()

A.44 B.41 C.88 D.81

下列情况中,不会调用拷贝构造函数的是( )。

A.用一个对象去初始化同一类的另一个新对象时

B.将类的一个对象赋予该类的另一个对象时

C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时

下面对静态数据成员的描述中,正确的是()。

A.静态数据成员是类的所有对象共享的数据

B.类的每一个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值

D.静态数据成员不能通过类的对象调用

下面的函数调用

fun(a+b,3,max(n-1)*b)

则fun 的实参个数是()。

A.3 B.4 C.5 D.6

已知函数fun的原型为

int fun(int ,int ,int)

下列重载函数原型中错误的是()

A.char fun(int,int);

B.double fun(int,int,double);

C.int fun(int,char *);

D.float fun(int,int,int);

下面描述中,正确的是()。

A.virtual可以用来声明虚函数

B.含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类C.即使基类的构造函数没有参数,派生类也必须建立构造函数D.静态数据成员可以通过成员初始化列表来初始化

有如下类定义:

class MyBase{

int k;

public:

MyBase(int n=0):k(n){}

int value()const{return k;}

};

class MyDerived: MyBase{

int j;

public:

MyDerived(int i): j(i){}

int getK()const {return k;}

int gutj()const{return j;}

};

编译时发现有一处语法错误,对这个错误最佳准确的描述是( )

A.在类MyDerived 的定义中,基类名MyBase 前缺少关键字public、protected 或private

B.函数getK 试图访问基类的私有成员变量k

C.类MyDerived 缺少一个无参的构造函数

D.类MyDerived 的构造的数没有对基数数据成员k 进行初始化

关于多继承二义性的描述,()是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B.派生类和它的基类中出现同名函数时,将可能出现二义性

C.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访

问可能出现二义性

D.解决二义性最常用的方法是作用域运算符对成员进行限定

有如下的运算重载函数定义:

double operator+(int i, int k){return double(i+k);}

但定义有错误,对这个错误的最准确的描述是( )。

A.+只能作为成员函数重载,而这里的+是作为非成员函数重载的

B.两个int 型参数的和应该是int 型,而这里将+的返回类型声明为double

C.没有将运算符重载函数声明为某个类的友元

D.C++已经提供了求两个int 型数据之和运算符+,不能再定义同样的运算符

关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数

class Parents{

public: int publicData;

private: int privateData;};

class ChildA: public Parents{/*类体略*/};

class ChildB: private Parents{/*类体略*/};

ChildA a; ChildB b;

下面语句中正确的是:( )

A. cout<

B. cout<

C. cout<

D. cout<

对C++编译器区分重载函数无任何意义的信息是( )

A.参数类型B.参数个数

C.返回值类型D.常成员函数关键字const

下面的程序段的运行结果为()

char str[] = "job", *p = str;

cout << *(p+2) << endl;

A)98 B)无输出结果C)字符’b’的地址D)字符’b’

已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为( ) A.a.operator++(1) B.operator++(a) C.operator++(a,1) D.a.operator++()

下列运算符中,不能重载的是()

A.&& B.!= C..(成员访问运算符) D.->

已知有数组定义

char a[3][4];

下列表达式中错误的是( )

A. a[2]=”WIN”

B. strcpy(a[2],”WIN”)

C. a[2][3]=?W?

D. a[0][1]=a[0][1]

有如下程序:

#include

using namespace std;

class Toy{

public:

Toy(char* _n) { strcpy (name,_n); count++;}

~Toy(){ count--; }

char* GetName(){ return name; }

static int getCount(){ return count; }

private:

char name[10];

static int count; };

int Toy::count=0;

int main(){

Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);

cout<

return 0; }

运行时的输出结果是( )

A.1

B.2

C.3

D.运行时出错

将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是( )

A.不合法的运算符B.一元运算符C.无操作数的运算符D.二元运算符有如下程序:

#include

using namespace std;

class Toy{

public:

Toy(char* _n) { strcpy (name,_n); count++;}

~Toy(){ count--; }

char* GetName(){ return name; }

static int getCount(){ return count; }

private:

char name[10];

static int count; };

int Toy::count=0;

int main(){

Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”);

cout<

return 0; }

运行时的输出结果是( )

A.1B.2C.3D.运行时出错

有如下两个类定义

class AA{};

class BB{ AA v1,*v2; BB v3; int *v4; };

其中有一个成员变量的定义是错误的,这个变量是( )

A.v1B.v2C.v3D.v4

有如下类定义:

class XX{

int xdata;

public: XX(int n=0) : xdata (n) { } };

class YY : public XX{ int ydata;

public: YY(int m=0, int n=0) : XX(m), ydata(n) { } };

YY类的对象包含的数据成员的个数是( )

A.1B.2C.3D.4

字符串常量"MyName\n"在内存中需要占用()字节

A.6 B.7 C.8 D.9

下列表达方式正确的是()。

A.class P{ B.class P{

public:public:

int x=15;int x;

void show(){cout<

};}

C.class P{ D. class P{

int f; public:

};int a;

f=25;void Seta (int x) {a=x;}

关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员

C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数

有如下程序段:

int i=4; int j=1;

int main() {

int i=8,j=i;

cout<

运行时的输出结果是()

A.44 B.41 C.88 D.81

已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为( ) A.a.operator++(1) B.operator++(a)

C.operator++(a,1) D.a.operator++()

#include

using namespace std;

class Test{

public:

Test(){}

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

};

int main(){

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

return 0;

}

执行这个程序输出星号(#)的个数为()。

A.1 B.2 C.3 D.4

关于多继承二义性的描述,()是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性

C.解决二义性最常用的方法是作用域运算符对成员进行限定

D.派生类和它的基类中出现同名函数时,将可能出现二义性

将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是( )

A.不合法的运算符B.一元运算符

C.无操作数的运算符D.二元运算符

有如下程序

#include

using namespace std;

class A {

public:

A(int i):r1(i) {}

void print() {cout<

void print() const {cout<

private:

int r1; };

int main(){

A al(2); const A a2(4);

al.print();a2.print();

return 0;

}

运行时的输出结果是( )

A.运行时出错B.E2-C16- C.C4-C16- D.E2-E4-

下列有关运算符函数的描述中,错误的是( )

A.运算符函数的名称总是以operator为前缀

B.运算符函数的参数可以是对象

C.运算符函数只能定义为类的成员函数

D.在表达式中使用重载的运算符相当于调用运算符重载函数

下列关于this指针的说法正确的是()

A. this指针存在于每个函数之中

B. 在类的非静态函数中this指针指向调用该函数的对象

C. this指针是指向虚函数表的指针

D. this指针是指向类的函数成员的指针

有如下程序段:

int i=5;

while (int i=0) { cout<<"*"; i--;}

运行时输出“*”的个数是()

A. 0

B.1

C. 5

D. 无穷

下列有关内联函数的叙述中,正确的是( )。

A.内联函数在调用时发生控制转移

B.内联函数必须通过关键字inline 来定义

C.内联函数是通过编译器来实现的

D.内联函数体的最后一条语句必须是return 语句

一个类可包含析构函数的个数是()

A.0个B.1个C.至少一个D.0个或多个

关于虚函数的描述中,正确的是()。

A.虚函数是一个static类型的成员函数

B.虚函数是一个非成员函数

C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数

D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型

下面对于友元函数描述正确的是( )

A.友元函数的实现必须在类的内部定义

B.友元函数是类的成员函数

C.友元函数破坏了类的封装性和隐藏性

D.友元函数不能访问类的私有成员

在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( ) A.派生类的对象可以赋给基类的对象

B.派生类的对象可以初始化基类的引用

C.派生类的对象可以直接访问基类中的成员

D.派生类的对象的地址可以赋给指向基类的指针

下列关于虚基类的描述,错误的是( )

A.设置虚基类的目的是为了消除二义性

B.虚基类的构造函数在非虚基类之后调用

C.只有最远派生类的构造函数调用虚基类的构造函数

D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数下面描述中,表达错误的是()

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承是基类中的private成员在派生类中仍是private的

C.公有继承时基类中的protected成员在派生类中仍是protected的

D.私有继承时基类中的public成员在派生类中是private的

10. 关于new运算符的下列描述中,错误的是()。

A.它可以用来动态创建对象和对象数组

B.使用它创建的对象和对象数组可以使用运算符delete删除

C.使用它创建对象时要调用构造函数

D.使用它创建对象数组时必须指定初始值

if 语句的语法格式可描述为

格式1:if(<条件>)<语句>

格式2:if(<条件>)<语句1>else<语句2>

关于上面的语法格式,下列表述中错误的是( )

A.<条件>部分可以是一个if 语句,例如if(if(a =0)?)?

B.<语句>部分可以是一个if 语句,例如if(?)if(?)?

C.如果在<条件>前加上逻辑非运算符!并交换<语句1>和<语句2>的位置,语句功能不变D.<语句>部分可以是一个循环语句,例如if(?)while(?)?

有如下类定义和变量定义:下列情况中,不会调用拷贝构造函数的是( )。

A.用一个对象去初始化同一类的另一个新对象时

B.将类的一个对象赋予该类的另一个对象时

C.函数的形参是类的对象,调用函数进行形参和实参结合时

D.函数的返回值是类的对象,函数执行返回调用时

有如下类定义:

class XX{ int xx;

public:

XX():xx(0) {co ut<

XX( int n):xx(n) { cout<

class YY: public XX{ int yy;

public:

YY():yy(0) {cout<

YY(int n): XX(n+1), yy(n) {cout<

YY(int m,int n):XX(m),yy(n){cout<

下列选项中,输出结果为A0的语句是( )

A.YY y1(0,0); B.YY y2(1); C.YY y3(0); D.YY y4;

下面对静态数据成员的描述中,正确的是()。

A.静态数据成员可以在类体内进行初始化

B.不能用参数初始化表对静态数据成员初始化

C.静态数据成员只能用类名调用

D.静态数据成员在定义对象时被分配空间

对C++编译器区分重载函数无任何意义的信息是( )

A.参数类型B.参数个数C.返回值类型D.常成员函数关键字const

下面()项是对构造函数和析构函数的正确定义。

A.void X::X(), void X::~X()

B.X::X(参数), X::~X()

C.X::X(参数), X::~X(参数)

D.void X::X(参数), void X::~X(参数)

有如下程序段:

int i=4; int j=1;

int main() { int i=8,j=i; cout<

运行时的输出结果是()

A. 44

B. 41

C. 88

D. 81

C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。

A.复用

B.继承

C.封装

D.引用

下列对继承的描述中,错误的是()。

A. 析构函数不能被继承

B. 派生类也是基类的组合

C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员

D. 派生类中继承的基类成员的访问权限到派生类保持不变

派生类的对象对它的基类成员中()是可以访问的。

A.公有继承的公有成员

B.公有继承的私有成员

C.公有继承的保护成员

D.私有继承的公有成员

下列说法错误的是()。

A. 公有继承的基类中的public成员在派生类中仍是public的

B. 公有继承的基类中的private成员在派生类中仍是private的

C. 私有继承的基类中的public成员在派生类中变成private的

D. 保护继承的基类中的public成员在派生类中变成protected的

C++类体系中,不能被派生类继承的有()。

A.构造函数

B.虚函数

C.静态成员函数

D.赋值操作函数

拷贝构造函数具有的下列特点中,()是错误的。

A. 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

B. 拷贝构造函数只有一个参数,并且是该类对象的引用

C. 拷贝构造函数是一种成员函数

D. 拷贝构造函数的名字不能用类名

下列关于虚基类的描述中,错误的是( )

A.使用虚基类可以消除由多继承产生的二义性

B.构造派生类对象时,虚基类的构造函数只被调用一次

C.声明“class B : virtual public A”说明类B为虚基类

D.建立派生类对象时,首先调用虚基类的构造函数

有如下程序

#include

using namespace std;

class A {

public:

A(int i):r1(i) {}

void print() {cout<

void print() const {cout<

private:

int r1;

};

int main(){

A al(2); const A a2(4);

al.print();a2.print();

Return 0;

}

运行时的输出结果是( )

A.运行时出错B.E2-C16- C.C4-C1.D.E2-E4-

下列对派生类的描述中,()是错误的。

A.一个派生类可以作为另一个派生类的基类

B.派生类至少有一个基类

C.派生类的成员除了它自己的成员外,还包含了它的基类成员

D.派生类中继承的基类成员的访问权限到派生类保持不变

派生类的对象对它的哪一类基类成员是可以访问的?()

A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员

C. 公有继承的基类的私有成员

D. 保护继承的基类的公有成员

关于多继承二义性的描述,()是错误的。

A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性

B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性

C.解决二义性最常用的方法是作用域运算符对成员进行限定

D.派生类和它的基类中出现同名函数时,将可能出现二义性

C++类体系中,能被派生类继承的是()。

A.构造函数B.虚函数C.析构函数D.友元函数

设有基类定义:

class Cbase

{ private: int a;

protected: int b;

public: int c;

};

派生类采用何种继承方式可以使成员变量b成为自己的私有成员( )

A. 私有继承

B.保护继承

C. 公有继承

D.私有、保护、公有均可

关于虚函数的描述中,()是正确的。

A. 虚函数是一个静态成员函数

B. 虚函数是一个非成员函数

C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义

D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型

下列关于动态联编的描述中,错误的是()。

A.动态联编是以虚函数为基础

B.动态联编是运行时确定所调用的函数代码的

C.动态联编调用函数操作是指向对象的指针或对象引用

D.动态联编是在编译时确定操作函数的

下面4个选项中,()是用来声明虚函数的。

A.virtual B.public C.using D.false

关于纯虚函数和抽象类的描述中,错误的是()。

A.纯虚函数是一种特殊的虚函数,它没有具体的实现

B.抽象类是指具体纯虚函数的类

C.一个基类中说明有纯虚函数,该基类派生类一定不再是抽象类

D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

编译时的多态性可以通过使用( )获得。

A.虚函数和指针B.重载函数和析构函数C.虚函数和对象D.虚函数和引用

三、填写程序运行结果(每小题4分,共20分)

以下程序的输出结果为

#include

using namespace std;

void main()

{ int k=5;

while(--k)

cout<<”k=”<< k<

}

下面程序的运行结果为:

#include

using namespace std;

void main()

{ int i,j,m=0,n=0;

for(i=0;i<2;i++)

for(j=0;j<2;j++)

if(j>=i)m=1;n++;

cout<

cout<

}

执行这个程序段输出字符*的个数是

#include

using namespace std;

int f(int a)

{int b=0;

static int c=3;

b++;c++;

return(a+b+c);

}

void main( )

{int a=2,I;

for(I=0;I<3;I++)

cout<

}

下面程序的运行结果为:

#include

using namespace std;

class Obj{

static int i;

public: Obj(){i++;} ~Obj(){i--;}

static int getVal(){return i;} };

int Obj::i=0;

void f (){Obj ob2;cout<

int main(){

Obj obl; f();

Obj*ob3=new Obj;cout<getVal();

delete ob3;cout<

return 0; }

下面程序运行结束后,k的值为_____。

#include

void main()

{ int i,j,k;

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

count<

}

下面程序的运行结果为:

#include

using namespace std;

class C1{

public:

~C1(){ cout<<1; } };

class C2: public C1{

public:

~C2(){ cout<<2; } };

int main(){ C2 cb2; C1 *cb1; return 0; }

下面程序的运行结果为:

#include

using namespace std;

class A{

public:

virtual v oid funcl(){cout<< “A1”;}

void func2(){cout<< “A2”;}};

class B: public A{

public:

void func1(){cout<< “B1”;}

void func2(){cout<< “B2”;}};

int main(){

A*p=new B; p->funcl(); p->func2(); return 0; }

以下程序的输出结果为

#include

using namespace std;

int add(int x,int y=8);

void main()

{ int a=4;

cout<

cout<

}

int add(int x,int y);

{return x+y; }

程序的输出结果为。

#include

using namespace std;

void main()

{ int i=0,x=0,y=0;

do{ ++i;

if(i%2!=0) {x=x+i;i++;}

y=y+i++;

}while(i<=7);

cout<<“x=”<

以下程序的输出结果为。

int x1=30, x2=40;

void main()

{ int x3=10, x4=20;

int sub(int x, int y);

sub(x3, x4);

sub(x2, x1);

cout<

}

sub(int x, int y)

{ x1=x;

x=y;

y=x1;

}

以下程序的输出结果为

#include

using namespace std;

class Csample

{private:

int i;

static int k;

public:

Csample( );

void Display( );

};

int Csample::k=0;

Csample::Csample( ) { i=0; k++; }

void Csample::Display( ) { cout<<"i="<

{ Csample a,b;

a.Display( );

b.Display( ); }

以下程序的输出结果为。

#include

using namespace std;

class Point{

int x,y;

public:

Point(int x1=0,int y1=8){x=x1;y=y1;}

~Point(){cout<<"Point "<

{Point a;

Point b(10,10); }

以下程序的输出结果为。

#include

using namespace std;

class A{

public:

virtual void funcl(){cout<< “A1”;}

void func2(){cout<< “A2”;} };

class B: public A{

public:

void func1(){cout<< “B1”;}

void func2(){cout<< “B2”;}};

int main(){

A*p=new B; p->funcl(); p->func2(); return 0; }

c++面向对象程序设计大作业

《面向对象程序设计》 大作业 题目学生成绩管理系统 学院 专业 班级 姓名 指导教师 2015 年11 月11 日

目录 一大作业的目的 (1) 二大作业的内容............................ . .. (2) 三大作业的要求与数据............... ...... . (3) 四大作业应完成的工作.................. . (4) 五总体设计(包含几大功能模块)........... . (5) 六详细设计(各功能模块的具体实现算法——流程图) (6) 七调试分析(包含各模块的测试用例,及测试结果) (7) 八总结 (8) 十参考资料 (9)

一大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 二大作业的内容 对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C++语言实现系统; 2、对学生信息(包括学号、姓名、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出. 3、学生信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能: (1) 每一条记录包括一个学生的学号、姓名、3门课成绩 (2)、成绩信息录入功能:(成绩信息用文件保存,可以一次完成若干条记录 的输入。) (3)、成绩信息显示浏览功能:完成全部学生记录的显示。 (4)、查询功能:完成按姓名查找学生记录,并显示。 (5)成绩信息的删除:按学号进行删除某学生的成绩. (6)、排序功能:按学生平均成绩进行排序。 (7)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案 考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。本文库还有其他网核及教学考一体化答案,敬请查看。 《面向对象程序设计》题库及答案一 一、单项选择题(每小题2分,共20分) 1.设x和y均为bool量,则x||y为假的条件是( )。 A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假 2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2] 的值为( )。 A.2 B.4 C.6 D.8 3.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。 A.p=new int B.p=new int* C.p=new int** D.p=new int[10] 4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进 行相应的软件更新的难易程度叫做软件的( )。 A.可维护性 B.可复用性 C.兼容性 D.正确性 5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。‘ A.in B.inline C.inLine D.InLiner . 6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。 A.1ength+1 B first+length C.(first+1ength—1)%MS D.(first+length)%MS 7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4, 5);”语句后,X.a和x.b的值分别为( )。

面向对象程序设计 C 复习题

一选择题(共 45题) 1.对类的构造函数和析构函数描述正确的是()。 A.构造函数可以重载,析构函数不能重载√ B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 2.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A)规律性 B.传递性√ C.重复性 D.多样性 3.假设OneClass为一个类,则该类的复制初始化构造函数的声明语句为()。 (OneClass p); B. OneClass& (OneClass p ); C. OneClass(OneClass & p);√ D. OneClass (OneClass * p); 4.对于结构中定义的成员,其默认的访问权限为()。 B. protected D. static 5.下面对静态数据成员的描述中,不正确的是()。 A.静态数据成员可以在类体内进行初始化√ B.静态数据成员不可以在类体内进行初始化 C.静态数据成员能受private控制符的作用 D.静态数据成员调用前必须初始 6. C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。 A.复用 B.继承√ C.封装 D.引用 7. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a 的格式为()。 A. x(a) B. x[a] C. x->a D. √ 9. 对于一个类的构造函数,其函数名与类名( )。 A. 完全相同√ B. 基本相同 C. 不相同 D. 无关系 10. 一个类的构造函数通常被定义为该类的( )成员。 A. 公有√ B. 保护 C. 私有 D. 友元 11. 一个类的析构函数通常被定义为该类的( )成员。 A. 私有 B. 保护 C. 公有√ D. 友元 12. 一个类的静态数据成员所表示属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性√ D. 类和友元的属性 13.类的析构函数的作用是()。 A.一般成员函数 B.类的初始化 C.对象初始化D.删除对象之前的善后工作√ 14.下列对基类和派生类关系的描述中,错误的是()。 A.派生类是基类的具体化B.派生类是基类的子集√ C.派生类是基类定义的延续 D.派生类是基类的组合 15.下列对派生类的描述中,错误的是()。 A.一个派生类可以作为另一个派生类的基类 B.派生类至少有一个基类 C.派生类的缺省继承方式是private D.派生类只继承了基类的公有成员和保护成员√ 16.下列对继承的描述中,错误的是()。 A.析构函数不能被继承

2016年电大面向对象程序设计技术-作业题

2015秋季学期计算机科学与技术本科 《面向对象程序设计技术》作业题 (在电大在线该课程讨论区跟帖提交,注明姓名和学号以记录成绩)选择题 1.可以在本类及派生类的成员函数中进行访问的访问控制修饰符是(B) A.private B.protected C.public 2.在IDE中将编程项目采用多文件结构下,类的定义一般放在(A) A.头文件 B.程序文件 C.主程序文件 3.内联成员函数在类外定义时要将其和类定义一起放在(A) A.头文件 B.程序文件 C.主程序文件 4.下面哪个内存区域是C++中的运行时动态内存分配区域?( D ) A.代码区 B.栈区 C.数据区 D.堆区 5.对象作为函数参数使用时,一般使用(A)形式 A.引用 B.指针 C.对象拷贝

6.同类的多个不同对象的数据成员值各有不同,但不同对象可以共享类的成员函数代码, 实际调用成员函数时,是通过(B )来区分不同对象的。 A.显式给出不同对象不同地址 B.隐含的this指针 C.引用 7.下面哪一种情况不会自动调用拷贝构造函数。(E) A.用一个对象初始化另一个对象时 B.当一个对象作为值传递给一个函数时 C.当一个对象作为值从一个函数返回之前,该对象被拷贝到栈区 D.函数调用结束后,栈区中的返回对象拷贝给主调程序的对象 E.建立指向对象的指针并初始化指针值时 8.下列哪些对象的数据成员类型可以不用初始化表的方式进行初始化(D) A.常量数据成员 B.引用数据成员 C.类中对象成员 D.一般数据成员 9.下列哪一种类设计一般无需在类中设计静态数据成员以使建立的多个对象共享静态数 据数据成员。( D ) A.一个链表类的头指针和尾指针 B.一个学生类中用于保存建立了多少个学生对象的计数器 C.银行帐号类中的年利率 D.一般只用于建立一个对象的类 10.一个类中的公有(public)性质的静态数据成员,以下哪一种访问方式是错误的(D) A.对象名.静态数据成员名 B.指向对象的指针—>静态数据成员名 C.类名::静态数据成员名 D.类名.静态数据成员名 11.下列哪一个运算符不能够被类所重载(E) A.“.”成员访问运算符 B.“*”成员指针访问运算符 C.“::”域运算符 D.“?:”条件运算符 E.“=”赋值运算符

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

2019电大面向对象程序设计期末复习题4及参考答案(经典复习考试题)

A. 作为友元函数重载的 1元运算符 B. 作为成员函数重载的 1元运算符 C. 作为友元函数重载的 2 _____ 不允许 _____ 向*this 或 2 .设x 和y 均为bool 量,则x && y 为真的条件是(A ) 它们均为假 D. 其中一个为假 3.在下面的二维数组定义中,正确的语句是 (C ) a[][3]={{1,3,5},{2}}; D. i nt a[](10); 4.在文件包含命令中,被包含文件的扩展名( C )o D.必须是.cpp 5.要使语句"p=new int[10][20]; "正确,p 应事先定义为( A. 它们均为真 B. 其中一个为真 C. A. i nt a[5][]; B. i nt a[][5]; C. i nt A. 必须是.h B. 不能是.h C. 可以是.h 或.cpp D )o A. i nt *p; B. i nt **p; C. i nt *p[20]; D. i nt (*p )[20]; 6. 在关键字public 后面定义的成员为该类的( B )成员。 A. 私有 B. 公用 C. 保护 D. 任 何 元运算符 D. 作为成员函数重载的 2元运算符 1. 当执行cout 语句输岀endl 数据项时,将使C++显示输岀屏幕上的光标从当前位置移动到 _____________ 下一行 ______ 的开始位置 2. 假定x 和y 为整型,其值分别为 16和5,贝U x/y 和double (x )/y 的值分别为 _____ 3 ______和 _______ 3.2 __ 。 3. strlen( ” apple ”)的值为 _______ 5 _____ 4. C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和 ______ 代码 ________ 区 5?假定a 是一个一维指针数组,则 a+i 所指对象的地址比 a 大 —4 * i ______ 字节。 6. 如果一个派生类只有一个唯一的基类,则这样的继承关系称为 ______ 单继承 ______ o 7. 假定AA 是一个类,“ AA* abc ()c on st;"是该类中一个成员函数的原型,在该函数体中 其成员赋值。 8 ?假定用户没有给一个名为 AB 的类定义构造函数,则系统为其定义的构造函数为 ___________ AB () {} _____ o 9?假定用户为类 AB 定义了一个构造函数 "AB (i nt aa ) {a=aa;}" ,该构造函数实现对数据成员 _________ a ____ 的初始化 10.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 ____ 2 ____ 个操作数。 三、程序填充题,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面 (每小题5分,共 20分) 1. 打印岀2至99之间的所有素数(即不能被任何数整除的数 )。 #in clude #in clude void mai n() { int i,n; lik 7. 假定AA 为一 个类, a 为该类私有的数据成员, 若要在该类的一个成员函数中访问它, 则书写格式最好为 (A ) o A a B. AA::a C. a() D. AA::a() 8. 队列具有( A ) 的操作特性。 A. 先进先岀 B. 先进后岀 C. 进岀无序 D. 仅进不岀 9. 假定AB 为一 个类, 则执行” AB a, b(3), *p; ”语句时共调用该类构造函数的次数为 (D )次。 A. 5 B. 4 C. 3 D. 2 10.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )

面向对象编程练习题库-test

面向对象编程练习题 专题1 初识Java 一、填空题 1.自从Sun推出Java以来,按应用范围可分为三个版本,分别是()、()、()。 2.环境变量的设置,若JDK安装在“D:\JDK”,则应设置Path为()、classpath为()。3.Java源文件的扩展名为(),用Javac编译Java源文件,得到的字节码文件的扩展名为()。4.如果Java源文件中有多个类,那么只能有一个类是()类。 二、选择题 1.作为Java应用程序入口的main方法,其声明格式是() A.public static int main(String args[]) B.public static void main(String args[]) C.public void main(String args[]) D.public int main(String args[]) 2.下面命令正确的是() A.java AppFirst.java B.java AppFirst C.java appfirst.class D.javac AppFirst 3.设有一个Java小程序,源程序名为FirstApplet.java,其HTML文件为FirstApplet.html,则运行该小程序的命令为() A.java FirstApplet B.javac FirstApplet.java C.appletviewer FirstApplet.java D.appletviewer FirstApplet.html 4.JDK安装完成后,主要的命令如javac、java等,都存放在根目录的()文件夹下。 A.bin B.jre C.include D.doc 5.Java语言是一种语言。 A.机器B.汇编C.面向过程的D.面向对象的 6、Java程序的最基本组成单位是( )。 A.函数B.过程C.变量D.类 7. main()方法的返回值类型是()。 A.boolean B.int C. void D.static 8. 下面哪个单词是Java语言的关键字()A.False B.FOR C.For D.for 9. 、线程是Java的()机制。 A.检查B.解释执行C.并行D.并发

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

《面向对象程序设计》期末考核试题样例及解答

《面向对象程序设计》期末考核试题样例及解答 一、单项选择(每小题1分,12小题,共12分) 1. C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 2. x>0 || y==5的相反表达式为()。 A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5 3. 在下面的字符数组定义中,有语法错误的是( )。 A. char a[20]=“abcdefg”; B. char a[]=“x+y=55.”; C. char a[15]; D. char a[10]=’5’; 4. 以下正确的函数原型语句是( )。 A. double fun(int x,int y) B. double fun(int x;int y) C. double fun(int,int); D. double fun(int x,y); 5. 在下面存储类中,()的对象不是局部变量。 A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类 6. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句是()。 A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy((*book)->title,”Wang Tao”); 7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 8. 在多文件结构的程序中,通常把含有main()函数的文件称为()。 A. 主文件 B. 实现文件 C. 程序文件 D. 头文件 9. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针 域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。 A. elemHead B. elemTail C. elemHead和elemTail D. elemHead或elemTail 10. 假定AB为一个类,则执行“AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构 造函数的次数为( )。 A. 5 B. 6 C. 3 D. 4 11. 引入友元的主要目的是为了()。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性 12. 如果是类B在类A的基础上构造,那么,就称()。 A. 类A为基类或父类,类B为超类或子类 B. 类A为基类、父类或超类,类B为派生类或子类 C. 类A为派生类,类B为基类 D. 类A为派生类或子类,类B为基类、父类或超类 二、填空(每空1分,15小题,共18分)

《面向对象程序设计》高起专习题三答案

《面向对象程序设计》高起专习题三答案 一、单项选择题(本大题共25小题,每小题2分,共50分) 1、用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。 A、空格或逗号 B、逗号或回车 C、逗号或分号 D、空格或回车 2、C++中声明常量的关键字是( A )。 A、const B、extern C、public D、enum 3、以下叙述中正确的是( B ) A、使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B、使用const定义的常量名有类型之分,其值在程序运行时是不可改变的 C、在程序中使用内置函数使程序的可读性变差 D、在定义函数时可以在形参表的任何位置给出缺省形参值 4、下列的符号常变量定义中,错误的定义是( C )。 A、const M=10; B、const int M=20; C、const char ch; D、const bool mark=true; 5、函数原型语句正确的是( B )。 A、int Function(void a) B、void Function (int); C、int Function(a); D、void int(double a); 6、在关键字private后面定义的成员为类的( A )成员。 A、私有 B、公用 C、保护 D、任何 7、在一个类的定义中,包含有( C )成员的定义。 A、数据 B、函数 C、数据和函数 D、数据或函数 8、在类作用域中能够通过直接使用该类的( D )成员名进行访问。 A、私有 B、公用 C、保护 D、任何 9、在关键字public后面定义的成员为类的( B )成员。 A、私有 B、公用 C、保护 D、任何 10、类中定义的成员默认为( B )访问属性。 A、public B、private C、protected D、friend 11、每个类( C )构造函数。

面向对象程序设计单元复习指导及解答(4)

2011春面向对象程序设计单元复习指导(4) 一、填空题: 1. 设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 析构函数 D. 拷贝构造函数 2. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( )。 A. 0 B. 1 C. 9 D. 10 3. 假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( )。 A. 3 B. 4 C. 5 D. 9 4. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( )。 A. 0 B. 1 C. n D. n+1 5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。 A. 函数体 B. 参数表 C. 初始化表 D. 初始化表或函数体 6. 一个类的静态数据成员所表示属性 ( )。 A. 是类的或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 类和友元的属性 7. 被非静态成员函数访问的类的数据成员( )。 A. 可以是非静态数据成员或静态数据成员 B. 不可能是类的静态数据成员 C. 只能是类的非静态数据成员 D. 只能是类的静态数据成员 8. 引入友元的主要目的是为了()。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性 9. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。 A. 作为友元函数重载的1元运算符 B. 作为成员函数重载的1元运算符 C. 作为友元函数重载的2元运算符 D. 作为成员函数重载的2元运算符 10. 如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a.operator+(b) B. b.operator+(a) C. operator+(a,b) D. operator(a+b) 11.如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a.operator++() B. operator++(a) C. operator++(a,1) D. operator++(1,a) 12. 一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是()。 A. ( ) B. = C. ++ D. * 13. 下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。 A. Value operator+(Value, Value); B. Value operator+(Value,int); C. Value &operator+(Value, Value); D. Value &operator+(Value&, Value&); 14. 关于插入运算符<<的重载,下列说法不正确的是()。 A. 运算符函数的返回值类型是ostream & 。 B. 重载的运算符必须定义为类的成员函数。 C. 运算符函数的第一个参数的类型是ostream & 。 D. 运算符函数有两个参数。 15. C++的继承性允许派生类继承基类的()。 A. 部分特性,并允许增加新的特性或重定义基类的特性 B. 部分特性,但不允许增加新的特性或重定义基类的特性 C. 所有特性,并允许增加新的特性或重定义基类的特性 D. 所有特性,但不允许增加新的特性或重定义基类的特性 二、填空题 1. 当一个队列为满时,不能对其做________元素的操作。 2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继(即下一个)结点。 3. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。 4.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

面向对象程序设计习题

面向对象程序设计习题

1.面向对象程序设计中的数据隐藏指的是参考答案为:D A.输入数据必须输入保密口令B.数据经过加密处理 C. 对象内部数据结构上建有防火墙D.对象内部数据结构的不可访问性[解析]输入数据必须输入保密口令和数据经过加密处理都不是面向对象程序设计的特征;对象内部数据结构上也不可能建有防火墙,所以它们都不是面向对象程序设计中所指的数据隐藏。面向对象程序设计系统中的封装单位是对象,对象之间只能通过接口进行信息交流,外部不能对对象中的数据随意地进行访问,这就造成了对象内部数据结构的不可访问性,也使得数据被隐藏在对象中。这就是面向对象程序设计中的数据隐藏所指。 2.下列各项中符合函数重载必须满足的条件的是参考答案为:D A.必须有不同的参数个数B.对应的参数类型必须不相同 C. A和B必须同时满足D.A和B只要满足一个即可 [解析]我们知道,在同一个作用域中,要实现函数重载必须满足的条件的是:① 有不同的参

数个数;或者② 对应的参数有不相同的数据类型,即①和②中只要有一个满足就可以了。当然两者都满足更好,但这不是必须的。3.下列带缺省值参数的函数说明中,正确的说明是参考答案为:A A.int Fun(int x,int y=2,int z=3); B.int Fun(int x=1,int y,int z=3); C. int Fun(int x,int y=2,int z); D.int Fun(int x=1,int y,int z=3); [解析]在带缺省值参数的函数说明中,正确的说明应该是无缺省值的参数依次排列在参数表的左边,排完无缺省值的参数后,再依次排列带缺省值的参数。从所给出的四个选项来看,只有“int Fun(int x,int y=2,int z=3)”符合这条规定,其它的都不符合。 4.有如下的对类“CSample”的说明,其中()是错误的。 class CSample { 参考答案为:A A.int a=23; B.CSample(); public: C.CSample(int val);

面向对象程序设计大作业(C++)

面向对象分析/设计课程大作业 银行业务处理系统 13级软件学院测试班 1367004029 曾丹 1.需求分析 随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。 现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如

何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。 近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。 随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。 特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。 主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。 系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。 储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。(开户金额必须是数字,密码和确认密码必须一样是六位数字) *注销模块:一旦注销该卡号就不存在且余额提醒你取出。 通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。 该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。经过实践证明,该划分是合理的,极大得提高了本系统的实现。

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

(2020年更新)电大《程序设计基础》机考网考纸考题库和答案

最新电大《程序设计基础》机考网考纸考题库及答案 本人针对该科目汇总了该科所有的题,形成一个完整的题库,并且每年都在更新。该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。 题库一 一填空题 1.世界公认的第一台通用电子数字计算机是美国宾夕法尼亚大学莫尔学院的莫奇利和埃克特领导的科研小组建造的,取 名为ENLAC。 2.第一代电子计算机(1946—1958)采用的基本逻辑元件是电子管。第二代电子计算机(1958~1964)采用的是基本 逻辑元件是晶体管。第三代电子计算机(1964~1974)采用的基本逻辑元件是半导体中小规模集成电路。第四代电子计算机(1974年以后)采用的基本元件是大规模集成电路。 3.世界上最早的高级程序程序语言是FORTRAN。 4.计算机按照工作原理进行分类可以分为数字计算机,和模拟计算机。 5.当前计算机的最基本原理采用的是,冯`诺依曼的“存储程序原理”。 6.计算机存储器一般分为两级,它们是主存储器,和外存储器。 7.计算机系统中的软件包括,所有程序和相关的文档。 8.计算机硬件通常由5大功能部件组成,它们是:存储器,运算器,控制器,输入设备和输出设备。 9.计算机语言有3种类型,它们是:机器语言,汇编语言和高级语言。 10.高级语言源程序的翻译有两种方式,一种是解释方式,另一种是编译方式。 11.微机中常用的高级语言主要有3类:它们是:面向过程的程序设计语言,面向问题的程序设计语言和面向对象的程序 设计语言。 12.程序设计过程的3个阶段是编程阶段,编译阶段和执行阶段。 13.最基本的程序控制有三种,它们是顺序执行,分支控制和循环控制。 14.C语言中分支语言是if 语句和switch 语句。 15.C语言中循环语言是while 语句,for 语句和do—while语句。 16.C语言中自增运算符是++ ,求余数的运算符号是% 。 17.C语言中要改变循环语句的流程可以使用语句break , continue 和go to . 18.数据的逻辑结构是指数据元素之间的逻辑关系,与数据的存储无关,它独立于计算机,如用户在电话号码表中的先 后次序关系;数据的存储结构是指数据元素在计算机存储设备中的存储方式。 19.数据的存储结构可以用顺序存贮方式和链式存贮方式。 20.数据的逻辑结构可分为线性结构,和非线性结构两大类。

面向对象程序设计复习题

1《面向对象程序设计》复习题 一、单项选择题 1. ( )是面向对象系统包含的要素。 A、类 B、多态 C、友元 D、重载 答案:A 2. 下列对常量的定义中,错误的是()。 A、MyClass const obj(3,4); B、char * const p="hello"; C、int i=1; const int &ref=i; D、void show() const; 答案:C 常量的定义: 1常对象 Const 类名对象名【(实参列表)】 类名Const 对象名【(实参列表)】 2 常数据成员 Const 类型常数据成员 3 常成员函数类型成员函数名Const 4 指向对象的常指针类名* Const 指针变量名=对象地址 5 指向常变量的指针变量Const 类型名* 指针变量名 3. 若有如下函数声明:void Fun(int x);,则下列()能与该函数进行重载。 A、void Fun(int y); B、void Fun(int x,int y='1'); C、int Fun(int x); D、void Fun(int) const;

答案:D 4. 下列对构造函数和析构函数的描述中,错误的是()。 A、构造函数可以重载 B、析构函数名与类名相同 C、构造函数中可以设置参数的缺省值 D、类中只有一个析构函数 答案:B 5. 下列对友元的描述中,错误的是()。 A、友元破坏了类的封装性 B、友元提高了程序的运行效率 C、友元可以在类外声明和定义 D、友元能够访问类中的私有成员 答案:C 6. 下列对继承的描述中,正确的是()。 A、派生类对象能够访问基类的公有成员 B、派生类继承了基类的公有成员和保护成员 C、派生类对象不能访问基类的保护成员 D、派生类不改变基类成员的访问权限 答案:C 7. 程序中,编译时出错的语句是()。 class Base{ }; class Derived : public Base { }; Derived objD1; Base objB=objD1; //A Base *pb=&objD1; //B Base &refB=objD1; //C Derived objD2=objB; //D 答案:B 8. 下面对派生类的描述中,正确的是()。 A、派生类是对基类的具体化

面向对象程序设计作业参考答案

习题一 5、分析下面程序运行的结果。 # using namespace std; int main() { cout<<”This”<<”is”; cout<<”a”<<”C++”; cout<<”program.”< using namespace std; int main() { int a,b,c; a = 10; b = 23; c = a + b; cout<<'a + b ="; cout< using namespace std; int main() { int a, b; a = b = 0; int c = a + b; cout<<”a + b =”<

9、输入以下程序,进行编译,观察编译情况,如果有错误,请修改程序,在进行编译,直到没有错误,然后进行连接和运行,分析运行结果。 修改后的程序如下: #include using namespace std; int add(int x,int y); int main() { int a = 0, b = 0; int c = add(a,b); cout<<" a + b ="<

相关文档
相关文档 最新文档