类与对象精品课件.pptVIP

  • 0
  • 0
  • 约8.19千字
  • 约 46页
  • 2026-01-29 发布于湖北
  • 举报

第四章

类与对象主要内容面向对象抽象抽象示例封装抽象实现继承与多态主要内容类和对象类的定义类的定义访问权限访问权限对象对象成员的访问成员函数目的对象默认形参值内联成员函数内联成员函数程序示例程序示例主要内容构造与析构函数构造函数构造函数示例构造函数示例构造函数示例复制构造函数示例复制构造函数复制构造函数析构函数应用实例应用实例应用实例主要内容类的组合初始化前向引用声明UML主要内容结构体结构体联合体classPoint //Point类的声明{public: //外部接口 Point(intx0=0,inty0=0)

{x=x0;y=y0;}//构造函数 Point(Pointp);//复制构造函数 intGetx(){returnx;} intGety(){returny;}private: //私有数据 intx,y;};Point::Point(Pointp)//复制构造函数的定义{x=p.x;x=p.y;cout复制构造函数被调用!endl;}......普通构造函数在对象建立时被自动调用,而复制构造函数在以下三种情况下会被调用:(1)用一个对象去初始化另一个同类的对象时intmain{Pointa(1,2);Pointb(a);//用a初始化b,构造函数被调用Pointc=a;//用a初始化c,构造函数被调用coutb.getx()endl;return0;}以上两种方式只是写法上不同,执行的操作完全相同(2)若函数的形参是类的对象,调用函数时形参与实参的结合viodf(Pointp){coutp.getx()endl;}只有在进行值传递时,复制构造函数才会被调用;若传递的是引用,则不会调用复制构造函数。因此传递比较大的对象时,传递引用效率要高。(3)若函数返回值是类的对象,函数执行完后返回主调函数时Pointg(){PointA(1,2);returnA;}intmain{Pointb;b=g();//???return0;}ex_class_04.cpp析构函数:负责对象被删除时的一些清理工作。析构函数的函数名由类名前加“~”组成析构函数没有返回值析构函数在对象生存期即将结束时被自动调用析构函数不接收任何参数若没有析构函数,系统会自动生成一个析构函数

(函数体都为空,如:~Point(){})例:一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。游泳池过道分析:可以定义一个类:圆。数据成员:圆的半径;函数成员:计算周长与面积;classCircle //声明类Circle{public: //外部接口Circle(floatx) {r=x;}//构造函数floatCircum(); //计算圆周长floatArea(); //计算圆面积private: //私有数据成员floatr;};//成员函数floatCircle::Circum() //计算圆的周长{return2*pi*r;}floatCircle::Area() //计算圆的面积{returnpi*r*r;}intmain(){floatx,y,z;cout输入游泳池半径:; //提示用户输入半径cinx;CirclePool(x); //声明Circle对象CirclePoolRim(x+3);//计算栅栏造价并输出y=PoolRim.Circum()*price1;cout栅栏造价为:yendl;//计算过道造价并输出z=(PoolRim.Area()-Pool.Area())*price2;cout过道的造价为:zendl;return0;}ex_class_05.cpp面向对象的基本特点类和对象构造函数和析构函数类的组合结构体与联合体

文档评论(0)

1亿VIP精品文档

相关文档