C++复习2----类与对象.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
Java语言的特点 Java开发环境的搭建
第四章 类、对象和接口.
第 9 章 物件的建構.
中文科 (六年級).
人 工 智 慧 報 告 五子棋AI設計 報告者 : 潘輝銘.
四資二甲 第三週作業 物件導向程式設計.
≠ 週休二日為何不是兩例假,要一例一休? 勞工 公務人員 例 假 例 假 但
面向对象的程序设计(一).
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
第6章 多态性与虚函数.
第二章 JAVA语言基础.
類別與物件 Class & Object.
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承
第八章 类和对象.
C++语言程序设计教程 第7章 类与对象 第7章 类与对象.
第三章 控制结构.
C程序设计 第9章 自定义数据类型 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
啟示錄.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
常用工具类.
第十一章 面向对象设计 第十二章 面向对象实现
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
刘胥影 东南大学计算机学院 面向对象程序设计1 2011~2012第3学期 刘胥影 东南大学计算机学院.
Ch10 類別與物件-方法 Java程式設計(2).
程式設計實作.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第9章 類別圖與物件圖 9-1 類別圖與物件圖的基礎 9-2 類別圖的符號 9-3 類別關係 9-4 物件圖 9-5 繪製類別圖與物件圖
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
第13章 结构体的应用 13.1 了解由用户构造的数据类型 13.2 结构体类型说明及结构体变量 13.3 结构体数组
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
資訊學科中心研習 JAVA程式設計專題 臺北市立大理高級中學 黃世隆 2019/2/23.
第4章 Excel 2007电子表格.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第三章 C# 基础知识.
辅导课程八.
面向对象 程序设计语言基础 马骏
JAVA 编 程 技 术 主编 贾振华 2010年1月.
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
第十章 结构体与链表 西安工程大学.
第三课 标识符、关键字、数据类型.
C#程序设计基础 $3 成员、变量和常量.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第三章 数据抽象.
第二章 Java语法基础.
面向对象技术 练习 ffh.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
本节内容 函数嵌套调用的内存布局 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
辅导课程十一.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
啟 基 學 校 年度校本課程 中華經典學習 目的:1. 提升品德學養,發展美善心靈,為世界大同作貢獻; 2
辅导课程十二.
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
對於成員(member)存取權的限制 成員的資料被毫無限制的存取,任誰都可以指定任意值給成員,Java語言為了防止這種現象的產生,規定:有一種成員的資料不能任由類別外部的任何人隨意存取。
第二章 Java基础语法 北京传智播客教育
安排座位.
Presentation transcript:

C++复习2----类与对象

定义类与对象 类的一般定义形式为: class 类名 { 访问属性: 数据成员与成员函数的说明或实现 };

数据成员的定义 数据成员类型1:数据成员列表; 数据成员类型2:数据成员列表; .

成员函数的定义 成员函数的定义由说明和实现两部分。 成员函数的说明是将成员函数在类体内声明,成员函数的实现是在类体外或类体内定义。 类体外定义的格式为: 函数类型 类名::成员函数(<参数列表>) { <函数体>; };

数据成员及函数成员的属性 public ---- 公有访问属性 private ---- 私有访问属性 protected ---- 保护访问属性 其中数据成员的属性默认为private

成员函数在类体内定义,不需声明 class Tdate { private: //数据成员:year,month,day int year; int month; int day; public: //成员函数print()在类体内定义,不需声明 void print() //类体内定义成员函数 print() printf("%d-%d-%d\n",year,month,day); } };

如何定义对象 类相当于一种特殊的数据类型,对象相当于一种特殊的变量。 类是对象的模板,对象是实例化后的类。 类的使用通过对象来实现。 对象的定义形式有两种方式: 方式1: 类名 对象名列表 方式2:class 类名 { ... }对象名列表;

对象的引用 对数据成员的引用: <对象名>.数据成员名 对数据成员的引用: <对象名>.数据成员名 对成员函数的引用: <对象名>.成员函数名<参数列表> 其中的点号.称为成员引用符,指示对象的成员。 <对象名>也可以用指向对象的指针替代,访问格式为: <指向对象的指针>->数据成员 <指向对象的指针>->成员函数名(参数列表) void main() { Tdate ada,*p; //定义对象和指针,类实例化 p=&ada; //从对象获取指向对象的指针 ada.print(); //使用对象 if(p->isLeapYear()) //使用对象 printf("is Leap Year."); }

对象的初始化----构造函数 面向对象程序中声明一个类对象时,编译程序为对象分配存储空间,进行初始化,在C++中,这部分工作由构造函数完成。 构造函数是特殊成员函数,名字与类名同名。当声明一个对象时,程序会自动调用对应类的构造函数,进行对象的初始化。

class Tdate { private: //定义数据成员 int year; int month; int day; public: Tdate() //无参数构造函数,构造函数与类同名 { year=1000;month=1;day=1; } Tdate(int y,int m,int d) //有参数构造函数,构造函数与类同名 { year=y;month=m;day=d; } void print() //类体内定义成员函数 print() { printf("%d-%d-%d\n",year,month,day); } }; void main() Tdate d1,d2(2000,2,2); //定义两个对象,d1和d2 d1.print(); //使用对象d1无参数 d2.print(); //使用对象d2有参数 } 构 造 函 数

析构函数 析构函数是一种特殊的类成员函数,在类对象生命周期结束时由系统自动调用,执行与构造函数相反的操作,一些清理任务,如释放存储空间等。 析构函数的定义: 类名::~析构函数名() { .... }

静态成员 静态成员可以实现多个对象之间的数据共享,不会破坏隐藏原则,保证了安全性。 静态成员在类中包括静态数据成员和静态成员函数。

<数据类型><类名>::<静态数据成员>=<初始值> 静态数据成员放在静态存储区,被同类建立的所有对象共享。 静态数据成员的初始化在类外进行,格式为: <数据类型><类名>::<静态数据成员>=<初始值> 注意:静态数据成员所占空间不会随对象的产生而分配,也不会随对象的消失而回收。

class student { private: static int count; //静态数据成员count public: student() //构造函数 { count++; //静态数据成员count上一次的值不会消失 } void print() { printf("count=%d\n",count); } }; int student::count=0; //在类外进行静态数据成员count的初始化 void main() student stu1,stu2; //实例化成两个对象stu1和stu2 stu1.print(); //使用对象stu1,并通过对象stu1使用成员函数print(),静态数据成员的值保留 stu2.print(); //使用对象stu2,并通过对象stu2使用成员函数print(),接着使用静态数据成员上一次值 } 静 态 数 据 成 员

静态成员函数 静态成员函数不属于一个对象,而属于整个类,可以直接引用静态成员。 对静态函数的引用格式有两种: 第1种: 类名::静态成员函数(参数表); 第2种: 对象.静态成员函数(参数表);

<类名> *<对象指针变量名> 指向对象的指针 类实例化成对象后,系统给对象分配存储空间,可以通过对象的首地址来访问对象。指向对象的指针是存储对象的首地址的变量。 指向对象的指针变量的定义格式: <类名> *<对象指针变量名>

使用指向类成员的指针 类由数据成员和成员函数组成,指向类成员的指针主要有指向类数据成员和类成员函数两种指针。 指向类数据成员指针的格式: (1)定义格式: <类型名><类名>::*<指针名>[=<初值>]; (2)赋值: <指针名>=&<类名>::<数据成员名>; (3)使用: 使用类对象: <对象名>.*<指针名> 使用对象指针: <对象指针名>->*<指针名>

指向成员函数的指针 定义格式:<类型>(<类名>::*<指针名>)(<参数表>); 赋值方法:<指针名>=<类名>::<函数名>; 使用类的对象:<对象名>.*<指针名>)(<参数名>); 使用类的对象指针: (<对象指针名>->*<指针名>)(<参数表>);

使用this指针 一个类中的成员函数在内存中仅有一个拷贝,用这个拷贝可以产生多个对象。

对象数组 对象数组是指数组元素为对象的数组,数组中的元素必须是同一个类的若干个对象。对象数组的元素是对象。 对象数组的定义格式: <类名><数组名>[<大小>] 数组的赋值: 创建一个临时对象,赋值后撤销。 对象数组的引用与普通数组一样。

对象指针数组 对象指针数组是指该数组的元素是指向对象的指针。 对象指针数组的定义格式: <类名>*<数组名>[<大小>]

指向对象数组的指针 指向数组的指针是指向普通类型数组的指针 指向对象数组的指针是指向对象数据类型的数组指针 <类型>(*<指针名>)[(大小)]...; <类名>(*<指针名>)[(大小)]...;

const关键词的使用 使用const关键词来限制对象的成员不被修改 在对象名前面使用const修饰的对象称为常对象 定义的格式: 定义常对象时进行初始化,该对象不能再被更新。 使用const修饰类中的成员 用const说明的数据成员称为常数据成员 用const说明的成员函数称为常成员函数 <类型说明符><函数名>(<参数表>)const