C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计
“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 类和对象的定义 对象数组 this指针 构造函数 对象作为普通函数的参数与返回值 析构函数 面向对象程序设计 对象数组 对象作为普通函数的参数与返回值 对象指针和堆对象 this指针 复制构造函数 内部类和命名空间 C++语言程序设计
基本知识 a C++语言程序设计
7.1 类和对象的定义 常见的程序设计方法 (1)面向过程的程序设计 (2)面向对象的程序设计 C++语言程序设计 7.1 类和对象的定义 常见的程序设计方法 (1)面向过程的程序设计 流程化的思想,围绕存放数据的基本变量来组织程序 将变量的赋值作为程序的基本操作 以变量值的改变作为程序的运行状态 以函数的调用来实现代码的重用 (2)面向对象的程序设计 是按照类和对象的思想来组织程序 类似于人类思维模式的方法去解决客观问题 事物——对象,类别——类 C++语言程序设计
7.1 类和对象的定义 面向对象的程序设计 每个对象都拥有自己的“状态”和“行为”。 “状态”在程序设计中称为数据、变量或属性 7.1 类和对象的定义 面向对象的程序设计 每个对象都拥有自己的“状态”和“行为”。 “状态”在程序设计中称为数据、变量或属性 “行为”在程序设计中称为方法或函数。 各对象间通过方法的调用实现交互,完成一定的任务。 用“类”将数据和对数据的操作封装在一个单独的数据结构中 程序的模块化程度更高,具有更强的描述客观事物的能力,适合大型的程序开发。 C++语言程序设计
…… 7.1 类和对象的定义 举例:学籍管理软件 需要管理大量的学生,每个学生都是一个对象 学生都有一些共同的属性特征和行为动作 7.1 类和对象的定义 举例:学籍管理软件 需要管理大量的学生,每个学生都是一个对象 学生都有一些共同的属性特征和行为动作 学生是一类事物,因此,可以从这一组具有相同属性和行为的学生对象中抽象出一个学生类。 学生类 方法 张三 走,学习 李四 走,学习 属性 男,23 男,20 …… 类 对象 对象 C++语言程序设计
7.1 类和对象的定义 学生类举例 Student 学生类 学号 姓名 属性 年龄 设置成绩 成绩 数据成员(Data Members) 7.1 类和对象的定义 学生类举例 Student 设置成绩 学生信息输出 学生类 方法 属性 学号 姓名 年龄 成绩 数据成员(Data Members) 成员函数(Member Functions) C++语言程序设计
7.1 类和对象的定义 对比结构类型 class Student //类的定义 { private: int id; 7.1 类和对象的定义 对比结构类型 class Student //类的定义 { private: int id; char name[20]; int age; float score; public: void setscore(); void printstu(); }; struct student //结构体类型定义 { int id; string name; int age; float score; }; 类和结构体都是一种自定义数据类型,有许多相似的地方,但是类的成员默认是private的,不可以任意访问 C++语言程序设计
7.1 类和对象的定义 使用类定义对象 class student a; a: student类型的变量,称为对象 class可省略 7.1 类和对象的定义 使用类定义对象 class student a; a: student类型的变量,称为对象 class可省略 通过对象调用公有接口函数实现一定的功能。 a.setscore(); a.printstu(); C++语言程序设计
7.1 类和对象的定义 类的声明 具体说明类的组成,声明类的语法形式 class 类名称 { public: 公有成员 protected: 7.1 类和对象的定义 类的声明 具体说明类的组成,声明类的语法形式 class 类名称 { public: 公有成员 protected: 保护型成员 private: 私有成员 }; //注意最后一定要有分号 数据成员 成员函数 C++语言程序设计
7.1 类和对象的定义 私有(private)成员(默认) 公有(public)成员 保护型(protected)成员 7.1 类和对象的定义 私有(private)成员(默认) 只允许本类的成员函数来访问 公有(public)成员 类对外的接口,在类声明和类(函数)实现之后,类的对象可以访问公有成员。 保护型(protected)成员 可访问性和私有成员的性质相似,在学习“继承”时再理解。 C++语言程序设计
7.1 类和对象的定义 关于访问控制属性,注意: 三种访问控制属性顺序 如果不写访问控制属性关键字 数据成员 函数成员 7.1 类和对象的定义 关于访问控制属性,注意: 三种访问控制属性顺序 习惯将公有类型放在最前面 可以按任意次序出现,也可以不出现,可以多次出现 一个成员只能具有一种访问控制属性。 如果不写访问控制属性关键字 默认的是private 数据成员 一般情况声明为私有成员(封装性较好) 函数成员 应该有一些公有的函数成员,作为对外的接口,否则别的代码无法访问类 C++语言程序设计
一般将类的声明单独写到扩展名为.h的头文件中 7.1 类和对象的定义 //Clock.h class Clock //类的声明 { public: void SetTime(int newH,int newM,int newS); void ShowTime(); private: int Hour; int Minute; int Second; }; 一般将类的声明单独写到扩展名为.h的头文件中 C++语言程序设计