- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)