面向对象C习题参考解答.docx

上传人:b****5 文档编号:7315863 上传时间:2023-05-11 格式:DOCX 页数:16 大小:16.79KB
下载 相关 举报
面向对象C习题参考解答.docx_第1页
第1页 / 共16页
面向对象C习题参考解答.docx_第2页
第2页 / 共16页
面向对象C习题参考解答.docx_第3页
第3页 / 共16页
面向对象C习题参考解答.docx_第4页
第4页 / 共16页
面向对象C习题参考解答.docx_第5页
第5页 / 共16页
面向对象C习题参考解答.docx_第6页
第6页 / 共16页
面向对象C习题参考解答.docx_第7页
第7页 / 共16页
面向对象C习题参考解答.docx_第8页
第8页 / 共16页
面向对象C习题参考解答.docx_第9页
第9页 / 共16页
面向对象C习题参考解答.docx_第10页
第10页 / 共16页
面向对象C习题参考解答.docx_第11页
第11页 / 共16页
面向对象C习题参考解答.docx_第12页
第12页 / 共16页
面向对象C习题参考解答.docx_第13页
第13页 / 共16页
面向对象C习题参考解答.docx_第14页
第14页 / 共16页
面向对象C习题参考解答.docx_第15页
第15页 / 共16页
面向对象C习题参考解答.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

面向对象C习题参考解答.docx

《面向对象C习题参考解答.docx》由会员分享,可在线阅读,更多相关《面向对象C习题参考解答.docx(16页珍藏版)》请在冰点文库上搜索。

面向对象C习题参考解答.docx

面向对象C习题参考解答

4-8定义一个Dog类,包含age,weight等属性,以及对这些属性操作的方法。

实现并测试这个类。

#includeusingnamespacestd;classDog

{

public:

voidsetAge(inta)

{

age=a;

}

intgetAge()

{

returnage;

}

voidsetWeight(floatw)

{

weight=w;

}

floatgetWeight()

{

returnweight;

}

private:

intage;floatweight;

};

 

voidmain()

{

Dogd;d.setAge(3);d.setWeight(30);

cout<<"小狗:

"<

"<

}

 

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

#include#includeusingnamespacestd;classRectangle

{

public:

Rectangle(intxx1,intyy1,intxx2,intyy2)

{

x1=xx1;y1=yy1;x2=xx2;y2=yy2;

}

floatgetArea()

{

returnfabs(x2-x1)*fabs(y2-y1);

}

private:

intx1,y1;intx2,y2;

};

 

voidmain()

{

Rectanglerec(0,0,10,20);

cout<<"矩形面积:

"<

}

 

4-11定义并实现一个矩形类,有长、宽两个属性,由成员函数计算矩形的面积。

#includeusingnamespacestd;classRectangle

{

public:

Rectangle(intl,intw)

{

length=l;width=w;

}

floatgetArea()

{

returnlength*width;

}

private:

intlength;intwidth;

};

voidmain()

{

Rectanglerec(10,20);cout<<"矩形面积:

"<

}

 

4-13定义一个Circle类,有数据成员radius(半径),成员函数getArea(),计算圆的面积,构造一个Circle的对象进行测试。

#includeusingnamespacestd;constfloatPI=3.1415;classCircle

{

public:

Circle(floatr)

{

radius=r;

}

floatgetArea()

{

returnradius*PI*PI;

}

private:

floatradius;

};

 

voidmain()

{

Circlec(5.5);

cout<<"圆的面积:

"<

}

 

c1.show();

 

{

public:

{

real=r;image=i;

}

{

real=real+b.real;image=image+b.image;

}

voidshow()

{

cout<

}

private:

floatreal;//实部

floatimage;//虚部

};

 

voidmain()

{

c1.show();

 

}

5-7定义一个Cat类,拥有静态数据成员numOfCats,记录Cat的个体数目;静态成员函数getNumOfCats(),读取numOfCats。

设计程序测试这个类,体会静态数据成员和静态成员函数的用法。

#includeusingnamespacestd;classCat

{

public:

Cat()

{

}

numOfCats++;

~Cat()

{

numOfCats--;

}

staticintgetNumOfCats()

{

returnnumOfCats;

}

private:

staticintnumOfCats;

};

 

intCat:

:

numOfCats=0;

voidmain()

{

cout<<"现在的Cat数量:

"<

:

getNumOfCats()<

cout<<"现在的Cat数量:

"<

cout<<"现在的Cat数量:

"<

}

 

5-14定义Boat与Car两个类,二者都有weight属性,定义二者的一个友元函数

getTotalWeight(),计算二者的重量和。

#includeusingnamespacestd;classCar;

classBoat

{

public:

Boat(floatw)

{

weight=w;

}

friendfloatgetTotalWeight(Boatb,Carc);private:

floatweight;

};

 

classCar

{

public:

Car(floatw)

{

weight=w;

}

friendfloatgetTotalWeight(Boatb,Carc);private:

floatweight;

};

floatgetTotalWeight(Boatb,Carc)

{

returnb.weight+c.weight;

}

 

voidmain()

{

Boatboat(3500);

Carcar(1000);

cout<<"船和汽车共重"<

"<

}

 

7-5定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea()函数计算对象的面积。

使用Rectangle类创建一个派生类Square。

#includeusingnamespacestd;constfloatPI=3.14;classShape

{

public:

Shape(floata,floatb=0.0)

{

 

}

protected:

this->a=a;this->b=b;

floata,b;

};

 

classRectangle:

publicShape

{

public:

Rectangle(floatl,floatw):

Shape(l,w)

{

}

floatgetArea()

{

returna*b;

}

};

 

classCircle:

publicShape

{

public:

Circle(floatr):

Shape(r)

{

}

floatgetArea()

{

returna*PI*PI;

}

};

 

classSquare:

publicRectangle

{

public:

Square(floatl):

Rectangle(l,l)

{

}

floatgetArea()

{

returna*a;

}

};

 

voidmain()

{

Rectangler(10,20);

Circlec(5);

Squares(10);

cout<<"矩形的面积:

"<

cout<<"圆的面积:

"<

cout<<"正方形的面积:

"<

}

 

7-6定义一个哺乳动物类Mamma,l再由此派生出狗类Dog,定义一个Dog类的对象,观察基

类与派生类的构造函数和析构函数的调用顺序。

#includeusingnamespacestd;classMammal

{

public:

Mammal()

{

cout<<"ConstructingMammal."<

}

~Mammal()

{

cout<<"DesstructingMammal."<

}

};

classDog:

publicMammal

{

public:

Dog()

{

cout<<"ConstructingDog."<

}

~Dog()

{

cout<<"DesstructingDog."<

}

};

voidmain()

{

Dogd;

}

7-8定义一个Document类,有数据成员name,从Document派生出Book类,增加数据成员

pageCount。

#includeusingnamespacestd;classDocument

{

public:

Document(char*n)

{

strcpy(name,n);

}

voidshow()

{

cout<

}

private:

charname[50];

};

classBook:

publicDocument

{

public:

Book(char*n,intp):

Document(n),pageCount(p)

{

}

voidshow()

{

 

}

private:

cout<<"书名:

";Document:

:

show();

cout<

"<

intpageCount;

};

voidmain()

{

Bookbook("C++语言程序设计",529);book.show();

}

 

7-10定义一个Object类,有数据成员weight及相应的操作函数,由此派生出Box类,增加数据成员height和width及相应的操作函数,声明一个Box对象,观察构造函数与析构

函数的调用顺序。

 

#includeusingnamespacestd;classObject

{

public:

Object()

{

cout<<"ConstructingObject."<

}

~Object()

{

cout<<"DestructingObject."<

}

voidsetWeight(intw)

{

weight=w;

}

intgetWeight()

{

returnweight;

}

private:

intweight;

};

 

classBox:

publicObject

{

public:

Box()

{

cout<<"ConstructingBox."<

}

~Box()

{

cout<<"DestructingBox."<

}

voidsetHeight(inth)

{

height=h;

}

intgetHeight()

{

returnheight;

}

voidsetWidth(intw)

{

width=w;

}

intgetWidth()

{

returnwidth;

}

private:

intheight;intwidth;

};

 

voidmain()

{

Boxbox;box.setHeight(5);box.setWidth(10);box.setWeight(8);

cout<<"盒子:

高"<

"<

}

 

8-4

#includeusingnamespacestd;classCounter

{

public:

Counter(intii=0)

{

i=ii;

}

voidprint()

{

cout<<"i="<

}

Counteroperator+(inta)

{

Countertemp;

 

}

private:

inti;

temp.i=i+a;returntemp;

};

voidmain()

{

Counterc;c=c+3;c.print();c=c+5;c.print();

}

 

8-5

#includeusingnamespacestd;classMammal

{

public:

virtualvoidspeak()

{

cout<<"MammalSpeak!

"<

}

};

classDog:

publicMammal

{

public:

virtualvoidspeak()

{

cout<<"DogSpeak!

"<

}

};

 

voidmain()

{

Dogd;d.speak();Mammal*p=&d;p->speak();

}

8-7

#includeusingnamespacestd;classPoint

{

public:

Point(intx=0,inty=0)

{

X=x;

Y=y;

}

voidprint()

{

cout<<"("<

}

Point&operator++()

{

X++;

Y++;

return*this;

}

Pointoperator++(int)

{

 

}

private:

Pointtemp=*this;

X++;

Y++;

returntemp;

intX,Y;

};

 

voidmain()

{

Pointp;(++p).print();

(p++).print();

(++p).print();

}

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2