第8章 类与对象.ppt
上传人:sy****28 上传时间:2024-09-15 格式:PPT 页数:74 大小:228KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第8章 类与对象.ppt

第8章类与对象.ppt

预览

免费试读已结束,剩余 64 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

类与对象类与对象类{数据;(数据成员)数据操作;(成员函数)}类是面向对象程序设计的核心,面向对象的所有特征都是以类为基础的。利用它可以实现数据封装以及继承与多态。类的定义类定义格式类定义格式类成员的访问权限例子:classCPerson{private:charm_strName[20];intm_nAge;intm_nSex;public:voidIncAge();intGetAge();}成员函数的实现classCPerson{private:charm_strName[20];intm_nAge;intm_nSex;public:intGetAge(){returnm_nAge;}voidIncAge();};voidCPerson::IncAge(){m_nAge++;}成员函数的实现成员函数的实现内联函数如果在类体中定义的成员函数函数体内不包括循环等控制结构,C++系统会自动将它们作为内联函数来处理。如果成员函数在类体外定义,系统把它默认为普通函数,调用这些成员函数的过程和调用一般函数的过程是相同的。如果想将这些成员函数指定为内联函数,应当用inline作显式声明。内联函数在C++类中,应用最广的,应该是用来定义数据成员的存取函数。定义类时一般把数据成员定义成私有的或者保护的,这样,外界就不能直接读写类的私有和保护成员。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果把这些读写成员的函数定义成内联函数的话,将会获得比较好的效率。classperson{private:intm_age;public:intreadage(){returnm_age;}voidwriteage(inta){m_age=a;}}对象类与对象的区别对象的声明对象成员的使用构造函数和析构函数构造函数构造函数构造函数对象的声明说明析构函数析构函数classCStudent{private:intm_nNo;charm_name[20];public:CStudent(){cout<<"无参构造函数被调用!"<<endl;}CStudent(intNo){cout<<"有参构造函数被调用!"<<endl;}~CStudent(){cout<<"析构函数被调用!"<<endl;}};voidmain(){intk;CStudenta;cin>>k;CStudentb(5);}对象数组classCStudent{private:intm_nNo;public:CStudent(){m_nNo=1;}CStudent(intNo){m_nNo=No;}};voidmain(){CStudentb[3]={1,2,4};}如果要给对象数组元素的多个数据成员完成初始化,则在花括号中要分别写出构造函数及其对应的实参。练习1设计类——三角形,该类属性为三角形三边,成员函数为求面积。主函数中计算边长为3、4、5的三角型的面积。#include<iostream>#include<cmath>usingnamespacestd;classTriangle{private:floata;floatb;floatc;public:Triangle(){a=1;b=1;c=1;}Triangle(floata1,floatb1,floatc1){a=a1;b=b1;c=c1;}doubleArea(){doubles;s=(a+b+c)/2;returnsqrt(s*(s-a)*(s-b)*(s-c));}};voidmain(){inta1,a2,a3;cout<<"请输入三角形的三边";cin>>a1>>a2>>a3;Trianglet(a1,a2,a3);cout<<t.Area()<<endl;}练习2设计一个用户类User,数据成员有用户名:User和口令:pass。编程实现输入一个用户名后,在(“Li”,“123456”),(“wang”,“654321”),(“Chen”,“213412”),(“Xu”,“878616”),(“Ma”,“876574”),(“Song”,“666666”)中查找,存在用户名输出对应的口令,找不到时输出相应的提示信息。#include<iostream>#include<string>usingnamespacestd;classUser{private:stringuser;stringpass;public:User(stringu,str