第10章C语言程序设计习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C 语言程序设计( Visual C++6.0 环境)》习题答案
习题十
、思考题
1.简述公有类型成员与私有类型成员的区别。
公有(public) 类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。
私有(private) 类型成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。
2.简述构造函数与析构函数的作用。
构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。
3.简述什么是友元函数。
友元函数是在类定义中由关键字friend 修饰的非成员函数。友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。
4.简述公有继承、私有继承和保护继承三种继承方式的区别。
⑴、当类的继承方式为公有(public 继承)时,基类的公有(public )成员和保
护( protected )成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。
⑵、当类的继承方式为保护( protected )继承时,基类的公有(public )成员和
保护( protected )成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。
⑶、当类的继承方式为私有(private )继承时,基类的公有(public )成员和保护(protected )成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。
#include
class cylinder
{
public:
cylinder(float r,float h)
{
radius=r;
height=h;
}
float Volume();
private:
float radius;
float height;
};
float cylinder::Volume()
{
return 3.14*radius*radius*height;
}
void main()
{
float r,h;
cout<<" 请输入圆柱体的底面半径和高:"; cin>>r>>h;
cylinder x(r,h);
cout< } 6.从第 5 题中定义的圆柱体类中派生出圆锥类,覆盖计算体积的成员函数。#include class cylinder { public: cylinder(float r,float h) { radius=r; height=h; } float Volume(); private: float radius; float height; }; float cylinder::Volume() { return 3.14*radius*radius*height; } class cone:public cylinder { public: float Volume(); cone(float r,float h):cylinder(r,h){}; }; float cone::Volume() { return cylinder::Volume()/3.0; } void main() float r,h; { cout<<" 请输入圆锥体的底面半径和高:"; cin>>r>>h; cone x(r,h); cout< } 7.定义一个生日( birthday )类,有年、月、日三个数据成员和输出生日成员函数。 #include class birthday { public: birthday(int y,int m,int d) { year=y;month=m;day=d; } void PrintBirth(); private: int year; int month; int day; }; void birthday::PrintBirth() { cout< } void main() { birthday b(2000,12,12); b.PrintBirth(); } 8 •定义一个形状(shape)类,在此基础上派生出矩形类和圆类,二者都有用来计算面积和周长的成员函数。 #include { public: float GetArea(); float GetPerimeter(); }; class rectangle:public shape { private: float width; float height; public: rectangle(float w,float h) {