第3章 类和对象.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 类和对象; 3.1 类;3.1.1类的定义;有关类定义的几点说明1:;(3) 类具有封装性,c++中的数据封装通过类来实现。外部不能随意访问说明为protected和private的成员。 (4) 一般情况下,类名的第一个字母大写。 (5) 由于类的公有成员提供了一个类的接口,所以一般情况下,先定义公有成员,再定义保护成员和私有成员,这样可以在阅读时首先了解这个类的接口。 (6) 数据成员可以是任何数据类型,但是不能用自动(auto)、寄存器(register)或外部(extern)进行说明。 (7) 注意在定义类时,不允许初始化数据成员。 ;(8) 结构体和类的区别 C语言中的结构体只有数据成员,无函数成员。C++语言中的结构可有数据成员和函数成员。在缺省情况下,结构体中的数据成员和成员函数都是公有的,而在类中是私有的。我们可以随意修改结构体变量中的数据,这样对数据的操作是很不安全的,我们不能通过结构体对数据进行保护和控制;在结构体中,数据和其相应的操作是分离的,使得程序的复杂性难以控制,而且程序的可重用性不好,严重影响了软件的生产效率。所以,一般我们仅在描述数据成员时使用结构,当既有数据成员又有成员函数时使用类。 (9) 注意:在类定义时不要丢掉类定义的结束标志分号。;类定义实例;3.1.2 类中成员函数的定义;void Tdate::Set(int m,int d,int y) // 置日期值 { month=m; day=d; year=y; } int Tdate::IsLeapYear() // 判是否闰年 { return (year%4==0year%100!=0)||(year%400==0); } void Tdate::Print() // 输出日期值 { coutmonth/day /yearendl; };2. 内联成员函数(内联函数、内部函数、内置函数);(1) 在类定义体内定义内联函数(隐式声明) ;(2) 使用关键字inline定义内联成员函数(显式声明) ;3.C++程序结构;3.2 对象 ;1.对象的基本概念 ;2. 对象的定义;3.成员的访问 ;class Myclock { private: int hour, minute, second; public: void init(); void updata(); void display(); }; Myclock clock,*pclock; // 定义对象clock和指向Myclock类对象的指针pclock clock.init(); // 通过对象访问公有成员函数 pclock=clock; // 指针pclock指向对象clock pclock-display(); // 通过指针访问成员函数 clock.hour=4; // 错误,因为对象不能访问其私有成员;例题;4.名字解析和this指针;this指针;5.带缺省参数的成员函数和重载成员函数;3.3 构造函数和析构函数 ;构造函数和析构函数的特性;3.3.1 构造函数 ;1. 构造函数(constructor) ;2.带缺省参数的构造函数;3.缺省构造函数(默认构造函数)和对象数组 ;(2) 对象数组 ;4. 拷贝构造函数(复制构造函数);下面定义了一个cat类和cat类的拷贝构造函数: class cat { private: int age; float weight; char *color; public: cat(); cat(cat ); // 拷贝构造函数的声明 void play(); void hunt(); }; cat::cat(cat other) { age = other.age; weight = other.weight; color = other.color; } ;自动调用拷贝构造函数的四种情况;(2) 深拷贝构造函数和浅拷贝构造函数;5. 数据成员的初始化;6. 类类型和基本数据类型的转换;(2) 类类型转换函数;3.3.2 析构函数(1);1. 析构函数被自动调用的三种情况 (1) 一个动态分配的对象被删除,即使用delete删除对象时,编译系统会自动调用析构函数; (2) 程序运行结束时; (3) 一个编译器生成的临时对象???再需要时。

文档评论(0)

勤能补拙 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档