电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++课件杨林权c++3类与对象

84页
  • 卖家[上传人]:E****
  • 文档编号:90583395
  • 上传时间:2019-06-13
  • 文档格式:PPT
  • 文档大小:271KB
  • / 84 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、类与对象,面向对象的编程的基本要素:类 类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。 利用类可以实现数据的封装、隐藏、继承与派生。 利用类易于编写大型复杂程序,其模块化程度比C中采用函数更高。 面向对象程序设计的重点是类的设计,类是面向对象程序的基本单元。,封装,将抽象出的数据成员、函数成员相结合,将它们视为一个整体。 目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。 实现封装:类声明中的 ,封 装,实例: class Clock public: void SetTime(int NewH,int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ;,特定的访问权限,外部接口,类的声明形式,类是一种用户自定义类型,声明形式: class 类名称 public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 ,公有类型成员,在关键

      2、字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。,私有类型成员,在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。 如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。默认访问控制为private。,保护类型成员,与private类似,只能在本类中被访问,类的对象不可以访问类的protected成员,但是,其在继承后的访问特点和private不同,将在后面详细讨论。,类示例,class Clock public: void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour, Minute, Second; ;,成员变量(属性),成员函数 (方法),void Clock : SetTime(int NewH, int NewM, int NewS) Hour=NewH; Minute=NewM; Second=NewS; void Clock : ShowTime() coutHour“:“Minut

      3、e“:“Second; ,class A /成员变量和函数成员 int index; void print(); ; struct B /成员变量和函数成员 int index; void print(); ;,class A private: int index; void print(); ; struct B public: int index; void print(); ;,类声明之两种方式 class/struct,class Person public: void setAge(unsigned n); unsigned getAge() const; private: unsigned age; double weight; protected: int flag; string name; ;,class Person public: void setAge(unsigned n); private: unsigned age; private: double weight; public: unsigned getAge() const; protected: in

      4、t flag; protected: string name; ;,3.1.2 C+的信息隐藏机制 通过关键字来控制的:private/public/protected;,3.1.4 类范围 (即类体内) 类的私有成员具有类范围性质,即类的私有成员仅能由类的成员函数访问。 3.1.5 关键字class和sturct的区别 默认的成员访问权限不通:前者private,后者public。 3.1.6 类成员函数的定义 成员函数的声明在类声明之中,在类声明之外定义; 成员函数的定义在类声明之中进行,即为内联方式。,成员函数,在类中说明原形,可以在类外给出函数体实现,并在函数名前使用类名加以限定。也可以直接在类中给出函数体,形成内联成员函数。 允许声明重载函数和带默认形参值的函数,内联成员函数,为了提高运行时的效率,对于较简单的函数可以声明为内联形式。 内联函数体中不要有复杂结构(如循环语句和switch语句)。 在类中声明内联成员函数的方式: 将函数体放在类的声明中。 使用inline关键字。,class Point public: void Init(int initX, int init

      5、Y) /此函数放在类 /体内定义,所 x = initX; /以是内联函数 y = initY; int GetX() return x; int GetY() return y; private: int x, y; ;,class Point public: void Init(int initX,int initY); int GetX(); int GetY(); private: int x,y; ;,成员函数定义放在类外部,用inline 关键字修饰 使其成为内联函数,inline void Point:Init(int initX,int initY) x = initX; y = initY; inline int Point:GetX() return x; inline int Point:GetY() return y; ,25,class Person public: inline void setAge(unsigned n); inline unsigned getAge() const; private: unsigned age; ; void Pers

      6、on:setAge(unsigned n) age = n; void Person:getAge() const return age; ,对象,类的对象是该类的某一特定实体,即类类型的变量。 声明形式: 类名 对象名; 例: Clock myClock;,类中成员的访问方式,类中成员互访 直接使用成员名 类外访问 使用“对象名.成员名”方式访问 public 属性的成员,3.1.3 成员选择符 ( . 和 ) . 成员选择符 ,指针操作符. class Person public: void setAge(unsigned n) age = n; private: unsigned age; ; int main() Person boxer; boxer.setAge(22); Person* pstudent = new Person(); pstudent-setAge(22); ,#include using namespace std; class Clock /类的声明和实现见前面的页面 int main() Clock myClock; myClock.SetTime

      7、(8, 30, 30); myClock.ShowTime(); ,构造函数,构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态。其函数名与类名相同,无返回值类型。 在对象创建时由系统自动调用,不能显式调用。 如果程序中未声明,则系统自动产生出一个默认形式的构造函数。 允许为内联函数、重载函数、带默认形参值的函数。,构造函数举例,class Clock public: Clock (int NewH, int NewM, int NewS);/构造函数 void SetTime(int NewH, int NewM, int NewS); void ShowTime(); private: int Hour,Minute,Second; ;,构造函数的实现: Clock:Clock(int NewH, int NewM, int NewS) Hour= NewH; Minute= NewM; Second= NewS; 建立对象时构造函数的作用: int main() Clock c (0,0,0); /隐含调用构造函数,将初始值作为实参。 c.Sh

      8、owTime(); ,拷贝构造函数,拷贝构造函数是一种特殊的构造函数,其形参为本类的对象引用。 class 类名 public : 类名(形参); /构造函数 类名(类名 &对象名);/拷贝构造函数 . ; 类名: 类名(类名 &对象名)/拷贝构造函数的实现 函数体 ,拷贝构造函数举例,class Point public: Point(int xx=0, int yy=0)x = xx; y = yy; Point(Point,Point:Point (Point ,34,拷贝构造函数举例,当用类的一个对象去初始化该类的另一个对象时系统自动调用拷贝构造函数实现拷贝赋值。 int main() Point A(1,2); Point B(A); /拷贝构造函数被调用 cout B.GetX() endl; ,拷贝构造函数举例,若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。例如: void fun1(Point p) coutp.GetX()endl; int main() Point A(1,2); fun1(A); /调用拷贝构造函数 ,拷贝构造函数,当

      9、函数的返回值是类对象时,系统自动调用拷贝构造函数。例如: Point fun2() Point A(1,2); return A; /调用拷贝构造函数 int main() Point B; B = fun2(); ,拷贝构造函数,如果程序员没有为类声明拷贝构造函数,则编译器自己生成一个拷贝构造函数。 这个拷贝构造函数执行的功能是:用作为初始值的对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。,拷贝构造函数小结 特点: 1. 拷贝构造函数创建一个新的对象,它是一 个已有对象的拷贝; 2. 拷贝构造函数可以有多个参数; 3. 如果类的设计者没有提供拷贝构造函数, 编译器会自动生成一个。 何时需要定义自己的拷贝构造函数 通常,如果一个类包含指向动态存储空间指针类型的数据成员,则就应为这个类设计拷贝构造函数。,#include #include using namespace std; class CNameList public: CNameList(void) size = 0; p = NULL; CNameList(const string , int);,void set(const string,CNameList:CNameList(const string s, int si) p = new stringsize = si; for (int i=0; isize; i+) pi = si; ,void CNameList:set(const string ,int main() string list

      《C++课件杨林权c++3类与对象》由会员E****分享,可在线阅读,更多相关《C++课件杨林权c++3类与对象》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.