C++关于类的程序。谢谢

C++关于类的程序。谢谢,第1张

b是所有的XA对象共享的一个静态变量,而且每调用一次构造函数b就会自加1,main中共有两个对象所以b的值为2,d1的a是用1初始化的d2的则是用3,所以dl.get{}、d2.get{}、分别为1、3。至于XA(int aa):a(aa)是在构造函数的变量赋值时的一种特殊用法(仅在构造函数才可用)他意思是用前面的aa参数来初始化自己的对象a,等效于XA(int aa){a=aa}但是前一种更高效,他是在编译时就进行了赋值。你以后还会接触拷贝构造函数及函数重载,好好学吧。

#include

<iostream.h>

class

CPolygon

{

protected:

int

width,

height

public:

void

set_values

(int

a,

int

b)

{

width=a

height=b

}

virtual

int

area

(void)

=0

}

class

CRectangle:

public

CPolygon

{

public:

int

area

(void)

{

return

(width

*

height)

}

}

class

CTriangle:

public

CPolygon

{

public:

int

area

(void)

{

return

(width

*

height

/

2)

}

}

int

main

()

{

CRectangle

rect

CTriangle

trgl

CPolygon

*

ppoly1

=

&rect

CPolygon

*

ppoly2

=

&trgl

ppoly1->set_values

(4,5)

ppoly2->set_values

(4,5)

cout

<<

ppoly1->area()

<<

endl

cout

<<

ppoly2->area()

<<

endl

return

0

}

本程序计算本输出矩形和三角形的面积,运行结果为:

20

10

上面的代码中,我们用基类CPolygon指针指向派生类CRectangle和CTriangle对象,没简陆调用派生类的area成员函数,而在main函数中枯顷输出area函数的计算结果。我们也可以在CPolygon类中定义一个成员函数,用于打印计算结果,而不管是哪一个派生类咐碰的area函数的计算结果。CPolygon类修改如下:

class

CPolygon

{

public:

void

printarea

(void)

{

cout

<<

this->area()

<<endl

}

}

并把main函数作如下修改:

int

main

()

{

ppoly1->printarea()

ppoly2->printarea()

return

0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12495012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存