欢迎来到天天文库
浏览记录
ID:50082096
大小:717.00 KB
页数:35页
时间:2020-03-08
《C++程序设计 教学课件 作者 白伟青 等 第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章类与对象6-1类的定义6-2对象的定义6-3构造函数和析构函数6-4this指针6-5静态成员6-6友元16-1类的定义在C++语言中,类是将数据和函数封装在一起的一种数据结构。类的定义形式如下:class类名{private:数据成员和成员函数;protected:数据成员和成员函数;public:数据成员和成员函数;};26-2对象的定义6-2-1对象的定义6-2-2对象成员的引用6-2-3对象相互赋值36-2对象的定义6-2-1对象的定义对象的定义格式为:类名对象名表;6-2-2对象成员的引用对象的成员表示形式如下:对象名.数据成
2、员名或者对象名.成员函数名(参数表)46-2-3对象相互赋值同一类的对象之间可以相互赋值。当一个对象赋值给另一个对象时,所有的数据成员都会逐位拷贝。对象赋值的形式为:对象名1=对象名2;56-3构造函数和析构函数6-3-1构造函数6-3-2析构函数66-3构造函数和析构函数6-3-1构造函数构造函数是一种特殊的成员函数,当定义一个类对象时,编译系统自动调用构造函数为对象分配存储空间,对数据成员赋初值。构造函数一般格式为:类名对象名(实参表);76-3-1构造函数【例6.4】构造函数的定义和使用。#includeclas
3、sCpoint{private:intX,Y;public:Cpoint()//不带参数的构造函数{X=5;Y=8;}86-3-1构造函数voidprint(){cout<4、在public部分。106-3-1构造函数(4)不带参数的构造函数创建的对象是相同的,若要创建同一类的不同对象,应使用带参数的构造函数。(5)若构造函数只有一个参数,并且是对某个对象的引用,则称其为拷贝构造函数。每个类都必须有一个拷贝构造函数,其格式如下:类名::构造函数名(类名&引用名)116-3-2析构函数析构函数是类的另一个特殊的成员函数。析构函数是在对象的生命期结束时由系统自动调用的函数,用来释放分配给对象的内存。126-3-2析构函数【例6.9】析构函数的使用。#includeclassCpoint{priv5、ate:intX,Y;public:Cpoint(intx,inty)//带参数的构造函数{X=x;Y=y;cout<<"constructingobject."<6、重载。(3)析构函数可以被显式调用,也可以由系统调用。(4)如果一个类没有定义析构函数,编译器会自动生成一个默认析构函数。156-4this指针通过this指针,将数据成员和这些数据成员所属的对象的成员函数联系在一起。使得成员函数知道如何访问和自己属于同一个对象的数据成员。【例6.10】this指针的使用。//求两个矩形中大的面积#include166-4this指针classRectangle{floatwidth,height;public:Rectangle(floatw,floath){width=w;heig7、ht=h;}176-4this指针floatarea(){returnwidth*height;}Rectangle&compare(Rectangle&rect);};186-4this指针Rectangle&Rectangle::compare(Rectangle&rect){if(area()>rect.area())return*this;elsereturnrect;}196-4this指针voidmain(){Rectanglerect1(3,4),rect2(6,5);Rectanglemax=rect1.compare(rec8、t2);cout<<"thelagerrectanglehasarea:"<
4、在public部分。106-3-1构造函数(4)不带参数的构造函数创建的对象是相同的,若要创建同一类的不同对象,应使用带参数的构造函数。(5)若构造函数只有一个参数,并且是对某个对象的引用,则称其为拷贝构造函数。每个类都必须有一个拷贝构造函数,其格式如下:类名::构造函数名(类名&引用名)116-3-2析构函数析构函数是类的另一个特殊的成员函数。析构函数是在对象的生命期结束时由系统自动调用的函数,用来释放分配给对象的内存。126-3-2析构函数【例6.9】析构函数的使用。#includeclassCpoint{priv
5、ate:intX,Y;public:Cpoint(intx,inty)//带参数的构造函数{X=x;Y=y;cout<<"constructingobject."<6、重载。(3)析构函数可以被显式调用,也可以由系统调用。(4)如果一个类没有定义析构函数,编译器会自动生成一个默认析构函数。156-4this指针通过this指针,将数据成员和这些数据成员所属的对象的成员函数联系在一起。使得成员函数知道如何访问和自己属于同一个对象的数据成员。【例6.10】this指针的使用。//求两个矩形中大的面积#include166-4this指针classRectangle{floatwidth,height;public:Rectangle(floatw,floath){width=w;heig7、ht=h;}176-4this指针floatarea(){returnwidth*height;}Rectangle&compare(Rectangle&rect);};186-4this指针Rectangle&Rectangle::compare(Rectangle&rect){if(area()>rect.area())return*this;elsereturnrect;}196-4this指针voidmain(){Rectanglerect1(3,4),rect2(6,5);Rectanglemax=rect1.compare(rec8、t2);cout<<"thelagerrectanglehasarea:"<
6、重载。(3)析构函数可以被显式调用,也可以由系统调用。(4)如果一个类没有定义析构函数,编译器会自动生成一个默认析构函数。156-4this指针通过this指针,将数据成员和这些数据成员所属的对象的成员函数联系在一起。使得成员函数知道如何访问和自己属于同一个对象的数据成员。【例6.10】this指针的使用。//求两个矩形中大的面积#include166-4this指针classRectangle{floatwidth,height;public:Rectangle(floatw,floath){width=w;heig
7、ht=h;}176-4this指针floatarea(){returnwidth*height;}Rectangle&compare(Rectangle&rect);};186-4this指针Rectangle&Rectangle::compare(Rectangle&rect){if(area()>rect.area())return*this;elsereturnrect;}196-4this指针voidmain(){Rectanglerect1(3,4),rect2(6,5);Rectanglemax=rect1.compare(rec
8、t2);cout<<"thelagerrectanglehasarea:"<
此文档下载收益归作者所有