chap4(谭浩强版) - c++ 部分作业及答案

2019-09-02 19:18

4-1 解释public 和private 的作用,公有类型成员与私有类型成员有些什么区别? 解:

公有类型成员用public 关键字声明,公有类型定义了类的外部接口;私有类型的成员用 private 关键字声明,只允许本类的函数成员来访问,而类外部的任何访问都是非法的,这样,

私有的成员就整个隐蔽在类中,在类的外部根本就无法看到,实现了访问权限的有效控制。 4-2 protected 关键字有何作用?

解:

protected 用来声明保护类型的成员,保护类型的性质和私有类型的性质相似,其差别在于继

承和派生时派生类的成员函数可以访问基类的保护成员。 4-3 构造函数和析构函数有什么作用?

解:

构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状 态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函数 在对象创建的时候由系统自动调用。

析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也 就是专门作扫尾工作的。一般情况下,析构函数是在对象的生存期即将结束的时刻由系统自 动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。 4-4 数据成员可以为公有的吗?成员函数可以为私有的吗? 解:

可以,二者都是合法的。数据成员和成员函数都可以为公有或私有的。但数据成员最好定义 为私有的。

4-5 已知class A 中有数据成员int a,如果定义了A 的两个对象A1、A2,它们各自的数据 成员a 的值可以不同吗?

解:

可以,类的每一个对象都有自己的数据成员。

4-6 什么叫做拷贝构造函数?拷贝构造函数何时被调用? 解:

拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象 的引用,其作用是使用一个已经存在的对象,去初始化一个新的同类的对象。在以下三种情 况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对 象,调用函数进行形参和实参结合时;如果函数的返回值是类对象,函数调用完成返回时; 4-7 拷贝构造函数与赋值运算符(=)有何不同?

解:

赋值运算符(=)作用于一个已存在的对象;而拷贝构造函数会创建一个新的对象。

4-8 定义一个Dog 类,包含的age、weight 等属性,以及对这些属性操作的方法。实现并测 试这个类。 解:

源程序:

#include using namespace std; class Dog {

public:

Dog(int A=0,int W=0); ~Dog(){};

void setAge(int newA) { }

age=newA;

void setWeight(int newW) { }

int showAge() { }

return age; weight=newW;

int showWeight() { return weight;

} private:

int age; int weight; };

Dog::Dog(int A,int W) {

age=A;

weight=W; }

void main() { }

Dog mydog(5,16); mydog.showAge(); mydog.showWeight();

cout<<\

cout<<\ mydog.setAge(8);

mydog.setWeight(20);

cout<<\cout<<\

4-9 设计并测试一个名为Rectangle 的矩形类,其属性为矩形的左下角与右上角两个点的坐 标,能计算矩形的面积。 解:

源程序:

#include using namespace std; class point {

public: point(int xx=0,int yy=0)

{ } int getx() {

return x; x=xx; y=yy;

}

int gety() { }

return y;

private: };

int x,y;

class Rectangle {

public: Rectangle(point xp1,point xp2);

int getarea() { }

return area;

private: };

Rectangle::Rectangle(point xp1,point xp2) { p1=xp1;

point p1; point p2;

int area;

}

p2=xp2;

int height=p2.gety()-p1.gety(); int width=p2.getx()-p1.getx(); area=height*width;

int main() { }

4-10 设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型 人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等

等。其中\出生日期\定义为一个\日期\类内嵌子对象。用成员函数实现对人员信息的录入和 显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成 员函数、聚集。 解:

#include #include using namespace std;

class Date //日期类 {

private: int year; int month; int day; public:

Date(){} //默认构造

Date(int y,int m,int d) //带参构造 {

year=y; month=m; day=d; }

void set() //设置数据函数 {

cin>>year>>month>>day;

point a(1,1),b(4,5); Rectangle myrectangle(a,b);

cout<<\return 0;

}

void display() //显示函数 {

cout<

class Person //人员类 { private: int num; char sex; Date birthday; char ID[18];

public:

Person(){} //默认构造

Person(int n,int y,int m,int d,char id[18],char s='m'):birthday(y,m,d) {

num=n; sex=s;

strcpy(ID,id);

} //有默认值的带参构造

Person(Person& p) //拷贝构造 {

num=p.num; sex=p.sex;

birthday=p.birthday; strcpy(ID,p.ID); }

void input() //输入函数 {

cout<<\录入数据:\ cout<<\编号:\ cin>>num;

cout<<\性别(m/f):\ cin>>sex; cout<<\生日:\ birthday.set();

cout<<\身份证号:\ cin>>ID; ID[18]='\\0';

cout<

void output() //输出函数


chap4(谭浩强版) - c++ 部分作业及答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教科版小学科学四年级下册期末检测题及试题答案[绝]

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: