聊城大学计算机学院面向对象的程序设计(c++)练习题(第三周)(构造函数和析构函数)

  • 格式:docx
  • 大小:28.04 KB
  • 文档页数:3

聊城大学计算机学院面向对象的程序设计第三次作业
一、单选题(本大题共17小题,每题3分,共51分):
1、在下列函数原型中,可以作为类AA构造函数的是()。

A void AA(int);
B int AA( );
C AA(int) const;
D AA(int);
2、下列选项中,哪一项功能是对对象进行初始化()。

A 析构函数
B 数据成员
C 构造函数
D 静态成员函数
3、假定A为类名,执行A x;语句时将自动调用该类的()。

A 有参构造函数
B 无参构造函数
C 拷贝构造函数
D 赋值构造函数
4、下列关于构造函数的说法,错误的是()。

A 系统可以提供默认的构造函数
B 构造函数可以有参数,所以可以有返回值
C 构造函数可以重载
D 构造函数可以设置默认参数
5、有如下类定义:
class Point
{
int x, y;
public:
Point__________:x_(0), y_(0){}
Point(int x, int y = 0):x_(x), y_(y){}
};
若执行语句:Point a(2), b[3], *c[4];则Point类的构造函数被调用的次数是()。

A 2次
B 3次
C 4次
D 5次
6、在下面的类定义中
class sample
{
public:
sample(int val); //①
~sample( ); //②
private:
int a=2.5; //③
public:
sample( ); //④
};
其中错误的语句是()。

A ①
B ②
C ③
D ④
7、假定一个类的构造函数为A(int i = 4, int j = 0) { a = i; b = j;}则执行A x(1)语句后,x.a和x.b的值分别为()。

A 1和0
B 1和4
C 4和0
D 4和1
8、下列关于构造函数的描述中,错误的是()。

A 构造函数可以设置默认参数
B 构造函数在定义类对象时自动执行
C 构造函数可以是内联函数
D 构造函数不可重载
9、下列选项中,哪一项不是构造函数的特征()。

A 构造函数的函数名与类名相同
B 构造函数可以重载
C 构造函数可以设置缺省参数
D 构造函数必须指定返回值类型
10、有如下程序:
#include<iostream>
using namespace std;
class Demo
{
public:
Demo__________
{
cout << “default constructor!\n”;
}
Demo(const Demo &x)
{
cout << “copy constructor!\n”;
}
};
Demo userCode(Demo b)
{
Demo c(b);
return c;
}
int main__________
{
Demo a, d;
cout << “calling userCode__________\n”;
d = userCode(a);
return 0;
}
执行上面程序的过程中,构造函数Demo__________和Demo(const Demo &x)被调用的次数分别是()。

A 1和1
B 1和2
C 2和3
D 2和4
11、下列关于拷贝构造函数的说法,错误的是()。

A 如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
B 拷贝构造函数只有一个参数,并且是该类对象的引用
C 拷贝构造函数是一种成员函数
D 拷贝构造函数的名字不能用类名
12、下列关于拷贝构造函数的描述,错误的是()。

A 拷贝构造函数的名字与类名相同
B 类中只有一个拷贝构造函数
C 拷贝构造函数可以有多个参数
D 拷贝构造函数没有返回值13、通常,拷贝构造函数的参数是()。

A 某个对象名
B 某个对象的成员名
C 某个对象的引用名
D 某个对象的指针名
14、有如下程序:
#include <iostream>
using namespace std;
class MyClass
{
public:
MyClass__________
{
cout << 'A';
}
MyClass(char c)
{
cout << c;
}
~MyClass__________
{
cout << 'B';
}
};
int main__________
{
MyClass p1, *p2;
p2 = new MyClass('X');
delete p2;
system("pause");
return 0;
}
执行这个程序,屏幕上将显示输出()。

A ABX
B ABXB
C AXB
D AXBB
15、下列选项中,哪一项是析构函数的特征()。

A 一个类只能定义一个析构函数
B 析构函数在对象创建时调用
C 析构函数的定义只能在类体内
D 析构函数可以有一个或多个参数
16、下面关于构造函数与析构函数的描述中,错误的是()。

A 构造函数定义了创建对象的方法,提供了初始化对象的一种简便手段
B 析构函数完成对象被删除前的一些清理工作
C 如果程序中未声明构造函数,则系统自动产生出一个缺省形式的构造函数
D 析构函数允许重载,但析构函数不得返回任何值,即使关键字void也不允许
17、类的析构函数的作用是()。

A 一般成员函数
B 类的初始化
C 对象的初始化
D 资源清理
二、判断题(本大题共7小题,每题3分,共21分):
18、因为构造函数不返回值,所以可以在构造函数名前加上void关键字。

()
19、若程序中没有显式提供类的构造函数,则编译器会自动提供一个无参构造函数。

()
20、构造函数和析构函数都不能重载。

()
21、定义对象指针时也要调用构造函数。

()
22、只要类中定义了一个构造函数,C++将不再提供默认的构造函数。

23、一个类中可以有多个同名的成员函数。

()
24、拷贝构造函数可以将对象作为实参传递给函数参数。

()
三、填空题(本大题共5小题,每题3分,共15分):
25、如果一个类中没有定义任何构造函数是,系统会自动提供一个__________构造函数;同样,类中没有定义析构函数时,系统会自动提供一个__________析构函数。

26、析构函数需要在函数名前加__________符号。

27、构造函数是__________被创建时自动执行,对象消失时自动执行的成员函数称为__________。

28、__________函数可以在程序结束时释放对象资源
29、一个类中可以有__________个构造函数,只能有__________个析构函数。

四、简答题(本大题共1小题,每题13分,共13分):
30、
定义一个图书类(Book),数据成员包括:书名、作者、单价、数量;成员函数包括:借书、还书、显示。

借书时判断数量,如果数量为0输出书名借阅失败,如果数量大于0,数量减1并输出书名和剩余数量。

还书时数量加1并输出书名和剩余数量。

显示时能够输出图书的所有信息。

创建图书对象时,可以给出书名、作者、单价、数量的数据进行初始化;也可以不给出任何数据,此时图书的书名是未命名,作者是佚名,单价是0,数量是0。

在主函数中创建图书对象book1和book2,book1初始化为“人类简史”、赫拉利、68、10。

book2不初始化。

然后分别输出book1和book2的信息。

book1借书2次,book2借书1次,还书1次,最后再分别输出book1和book2的信息。