标签:
教育编程语言计算机面向对象程序设计 |
分类: C 程序设计 |
C++作业(2)
一、选择题
1.关于类定义格式的描述中,(
2.下列关键字中,(
A、构造函数的函数名与类名相同;B、构造函数可以重载;
C、构造函数可以设置缺省参数;
4、在C++中,关于下列设置参数默认值的描述中,( )是正确的。
A、不允许设置参数的默认值; B、设置参数默认值只能在定义函数时设置;
C、设置参数默认值时,应该是先设置右边的,再设置左边的;
D、设置参数默认值时,应该全部参数都设置。
5、关于new运算符的下列描述中,( )是错误的。
A、它可以用来动态创建对象和对象数组;
B、使用它创建的对象或对象数组可以使用运算符delete删除;
C、使用它创建对象时要调用构造函数;D、使用它创建对象数组时必须指定初始值。
6、重载函数在调用时选择的依据中,( )是错误的。
A、参数个数;B、参数的类型;C、函数名字;D、函数的类型。
7、( )是析构函数的特征。
A、一个类中只能定义一个析构函数;B、析构函数名与类名不同;
C、析构函数的定义只能在类体内;D、析构函数可以有一个或多个参数;
8、关于delete运算符的下列描述中,( )是错误的。
A、它必须用于new返回的指针;B、它也适用于空指针;
C、对一个指针可以连续使用多次该运算符;
D、指针名前只有一对方括号符,不管所删除数组的维数。
9、在( )情况下适宜采用inline定义内联函数。
A、函数体含有循环语句;B、函数体含有递归语句;
C、函数代码小,频繁调用;D、函数代码多,不常调用;
10、定义析构函数时,应该注意( )。
A、其函数名与类名完全相同;B、函数返回类型是void类型;
C、无形参,也不可重载;
11、关于成员函数特征的下列描述中,( )是错误的。
A、成员函数一定是内联函数;
C、成员函数可以设置缺省参数值;D、成员函数可以是静态的;
12、下列静态数据成员的特性中,( )是错误的。
A、说明静态数据成员时前边要加修饰符static;B、静态数据成员要在类体外进行初始化;
C、静态数据成员不是所有对象所共用的;
D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符;
13. 关于类成员函数的描述中,(
A.
类中可以说明一个或多个成员函数
C. 定义在类体外的成员函数前加inline可以成为内联函数(内置函数) D. 在类体外定义成员函数时,在函数名前除了加类型说明符外,还需作用域符来限定该成员函数所属的类
第8题 注:
使用运算符delete时,应注意如下事项:
②对一个指针只能使用一次运算符delete;
③指针名前只能用一对方括号符,而不管所释放数组的维数,并且在方括号内不写任何东西;
④该运算符也适用于空指针。
二、分析以下程序的执行结果
1.#include<iostream.h>
class Sample
{
};
Sample::Sample()
{
}
Sample::Sample(int m)
{
}
void Sample::display()
{
}
Sample::~Sample()
{
}
void main()
{
}
参考答案:
constructing normally
constructing with a number:20
display a number:0
display a number:20
destructing
destructing
考查内容:构造函数和析构函数
2.#include <iostream.h>
参考答案:
5
10
3
考查内容:普通局部变量、成员变量、全局变量的区别
三、完成程序
1.下面列出了由三个文件main.cpp、MyClass.h和MyClass.cpp组成的一个程序。文件main.cpp中实现了主函数;文件MyClass.h中定义了类MyClass;文件MyClass.cpp中实现了类MyClass的成员函数。仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。要求:
a.将成员变量定义为私有的;
b.不要增加题中没有用到的类成员。
//文件main.cpp
#include <iostream.h>
#include "MyClass.h"
void main()
{
MyClass obj(3.3);
cout << obj.GetMember() << endl;
obj.SetMember(5.6);
cout << obj.GetMember() << endl;
}
/*******************************/
//文件 MyClass.cpp
#include "MyClass.h"
float MyClass::GetMember()
{
return member;
}
void MyClass::SetMember(float member)
{
MyClass::member=member;
}
//在这里写出构造函数的实现函数
MyClass::MyClass(float member)
{
}
/*******************************/
//文件 MyClass.h
//类MyClass的定义
class MyClass {
//在下面写出类的定义体
public:
private:
};
*2.下面是一个类Circle的定义,它有一个整型成员变量radius,有一个无参构造函数,还包括存取radius的两个函数GetRadius()和SetRadius(),程序中已经为Circle定义了大多数成员函数。仔细阅读类的定义,然后完成后面的小题。
class Circle {
public:
Circle():radius(5){}
void SetRadius(int r) { radius=r; }
int GetRadius() { return radius; }
private:
int radius; //圆的半径
};
(1) 为下面的类增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数。
(2)为类增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序
Circle c;
c.SetRadius(5);
c.Print();
将输出:
The circle has radius of 5!
参考答案:
#include <iostream.h>
class Circle {
public:
private:
};
Circle::Circle(int r)
{
void Circle::Print()
{
void main()
{
}
四、找出下面程序中的错误,并改正。
#include <iostream.h>
class TV
{//没有public标识符
private:
}
void main()
{
}
参考答案:
#include <iostream.h>
class TV
{
public: //没有public
private:
};
void main()
{
}
五、程序设计
1.定义一个满足如下要求的Date类。
(1)用下面的格式输出日期:
(2)可运行在日期上加一天操作(3)设置日期
*2.创建一个employee类,该类中有字符数组,表示姓名、街道地址、市、省和邮政编码。把表示构造函数、changname()、display()的函数的原型放在类定义中,构造函数初始化每个成员,display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。