内蒙古科技大学C++第四章习题答案Word格式文档下载.docx

上传人:b****6 文档编号:20084211 上传时间:2023-01-16 格式:DOCX 页数:18 大小:138.91KB
下载 相关 举报
内蒙古科技大学C++第四章习题答案Word格式文档下载.docx_第1页
第1页 / 共18页
内蒙古科技大学C++第四章习题答案Word格式文档下载.docx_第2页
第2页 / 共18页
内蒙古科技大学C++第四章习题答案Word格式文档下载.docx_第3页
第3页 / 共18页
内蒙古科技大学C++第四章习题答案Word格式文档下载.docx_第4页
第4页 / 共18页
内蒙古科技大学C++第四章习题答案Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

内蒙古科技大学C++第四章习题答案Word格式文档下载.docx

《内蒙古科技大学C++第四章习题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《内蒙古科技大学C++第四章习题答案Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

内蒙古科技大学C++第四章习题答案Word格式文档下载.docx

C.某个对象的指针名 

D.某个对象的引用名

7.已知A是一个类,则执行语句Aa;

时,将自动调用该类的(B)。

A.有参构造函数 

B.无参构造函数

C.拷贝构造函数 

D.赋值构造函数

二、简答题

1.比较C++中的结构(struct)和类(class)的概念的相同和不同之处。

答:

相同处:

struct和class都可以包含成员函数和数据成员,struct和class都可以继承,struct和class都可以实现多态

不同处:

struct和class的默认继承访问权限不同,struct默认是public的,class默认是private

2.类中的公有(public)成员和私有(private)成员有什么区别?

公有权限的数据成员或成员函数可以作为与外界联系的公共接口,由外界访问,称为类的外部接口,外界只能通过公有成员这个借口与类发生联系.共有成员不仅可以由该类的成员函数访问,还可以在类外的程序中通过对象来访问.

私有成员只能通过该类的成员函数或友元函数访问,在类外的程序中不能通过对象来访问,对私有成员来说,来自类外的任何访问都是非法的.通常将类中的数据成员全部或大部分定义为私有的,这是类封装体最隐蔽的部分,实现了类内部数据的有效保护,提高了类封装数据的安全性.在类外,可以通过对象调用共有成员函数,实现对私有成员的访问.

3.构造函数和析构函数的作用是什么?

构造函数是类中一个特殊的成员函数,他的作用是为对象的数据成员分配存储空间,对数据成员赋初值.

析构函数的作用与构造函数正好相反,它用来完成对象被删除前的一些内存释放工作.

4.构造函数是否可以重载?

为什么?

析构函数呢?

构造函数可以重载,因为一个类可以定义无参数或者参数个数不同的多个构造函数.

析构函数不可以重载,因为析构函数没有参数,不可以像构造函数一样重载.

5.拷贝构造函数的作用是什么?

何时调用拷贝构造函数?

拷贝构造函数的作用是用一个已存在的对象去初始化创建一个同类的新对象.

拷贝构造函数一般在三种情况下调用:

1.用已存在的对象去初始化创建同类的一个新对象.

2.对象作为函数的参数

3.函数的返回值为一个对象

6.分析下面的程序,写出运行结果。

程序(1):

#include<

iostream.h>

classexap

{intx,y;

public:

exap(inta,intb)

{

x=a;

y=b;

}

exap(exap&

P)

{

x=P.x;

y=P.y;

intset(intx1,inty1)

x=x1;

y=y1;

intgeta()

{returna;

}

intgetb()

{returnb;

};

voidmain()

exapA(1,2);

exapB=A;

cout<

<

"

A="

A.geta()<

"

A.getb()<

endl;

B="

B.geta()<

B.getb()<

B.set(10,20);

运行结果:

A=1,2

B=1,2

B=10,20

Pressanykeytocontinue

程序

(2):

string.h>

classexample1

example1()

cout<

constructingexample1."

~example1()

destructingexample1."

classexample2

example2()

constructingexample2."

~example2()

destructingexample2."

example1stu1;

example2tea1;

endinmain"

constructingexample1.

constructingexample2.

endinmain

destructingexample2.

destructingexample1.

7.设类A的定义如下:

classA

inta;

……

若用类A定义了两个对象x1,x2,它们各自的数据成员a是同一个变量吗?

取值是否

可以不同?

答:

是同一个变量,因为创建对象通过构造函数构造的数据成员都是同一个变量

可以取值不同,调用构造函数时若传递的实参不同或者无参数时,即可以使构造的数据成员取值不同.

8.下面是一个产品类Product的定义。

完成成员函数的定义,并用数据测试这个类。

classProduct

char*name;

//产品名称

int 

price;

//产品单价

quantity;

//剩余产品数量

public:

Product(char*n,intp,intq);

~Product();

voidbuy(intmoney);

//购买产品

voidget()const;

//返回剩余产品数量

#include<

classProduct

Product(char*n,intp,intq);

//构造函数

~Product();

//析构函数

voidget();

//显示剩余产品数量

voidbuy(intmoney);

//购买产品 

private:

charname[20];

//产品名称 

intprice;

//产品单价 

intquantity;

//剩余产品数量 

Product:

:

Product(char*n,intp,intq)

strcpy(name,n);

price=p;

quantity=q;

~Product()

析构函数已调用"

voidProduct:

get()

产品名称:

name<

产品单价:

price<

剩余数量:

quantity<

buy(intmoney)

quantity-=money;

已购买"

money<

此产品"

charn[10];

intp,q;

请输入产品名称,产品单价,产品数量:

cin>

>

n>

p>

q;

ProductP1(n,p,q);

P1.get();

intmoney;

请输入您要购买的数量:

cin>

money;

P1.buy(money);

三、编程题

1.

classCuboid

intlength;

intwidth;

intheight;

Cuboid(intl=0,intw=0,inth=0)

length=l;

width=w;

height=h;

~Cuboid()

cout<

voidareavolume(intlength,intwidth,intheight);

voidCuboid:

areavolume(intlength,intwidth,intheight)

intarea,volume;

area=(length*width+width*height+length*height)*2;

volume=length*width*height;

表面积为"

area<

体积为"

volume<

intl,w,h;

请输入长方体的长,宽,高:

l>

w>

h;

CuboidC1(l,w,h);

C1.areavolume(l,w,h);

voidareavolume();

areavolume()

(length*width+width*height+length*height)*2<

length*width*height<

C1.areavolume();

2.

classpoint

intx;

inty;

point(intxp=0,intyp=0)

x=xp;

y=yp;

intgetx()

returnx;

intgety()

returny;

intx,y;

请输入x和y的值:

x>

y;

pointp1(x,y);

x的值为"

p1.getx()<

y的值为"

p1.gety()<

4.#include<

#defineN20

classStudent

longID;

charname[N];

intscore1;

intscore2;

Student(longID1,char*n,ints1,ints2);

~Student()

voiddisplay();

voidaverage();

Student:

Student(longID1,char*n,ints1,ints2)

ID=ID1;

strcpy(name,n);

score1=s1;

score2=s2;

voidStudent:

display()

学生信息:

姓名:

学号:

ID<

成绩1:

score1<

成绩2:

score2<

average()

该学生两门课的平均成绩为:

(score1+score2)/2<

请输入学生姓名,学号,第一科目成绩,第二科目成绩:

name>

ID>

score1>

score2;

StudentS1(ID,name,score1,score2);

S1.display();

S1.average();

5.

Student(longID1,char*n,ints1,ints2)

ID=ID1;

strcpy(name,n);

score1=s1;

score2=s2;

Student(Student&

obj)

ID=obj.ID;

strcpy(name,obj.name);

score1=obj.score1;

score2=obj.score2;

StudentS2(S1);

S2.display();

S2.average();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1