当前课程知识点:C++语言程序设计基础 >  第4章 类与对象 >  类和对象 >  类和对象的定义

返回《C++语言程序设计基础》慕课在线视频课程列表

类和对象的定义在线视频

类和对象的定义

类和对象的定义

l  对象是现实中的对象在程序中的模拟。

l  类是同一类对象的抽象,对象时类的某一特定实体。

l  定义类的对象,才可以通过对象使用类中定义的功能。

设计类就是设计类型

l  此类型的“合法值”是什么?

l  此类型应该有什么样的函数和操作符?

l  新类型的对象该如何被创建和销毁?

l  如何进行对象的初始化和赋值?

l  对象作为函数的参数如何以值传递?

l  谁将使用此类型的对象成员?

类定义的语法形式

class 类名称

{

   public:

                     公有成员(外部接口)

   private:

                      私有成员

   protected:

                      保护型成员

};

 

类内初始值

l  可以为数据成员提供一个类内初始值

l  在创建对象时,类内初始值用于初始化数据成员

l  没有初始值的成员将被默认初始化。

l  类内初始值举例

class Clock {

public:

   void setTime(int newH, int newM, int newS);

   void showTime();

private:

   int hour = 0, minute = 0, second = 0;

};

 

类成员的访问控制

l  公有类型成员

n  在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。

l  私有类型成员

n  在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。

n  如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。

l  保护类型成员

n  与private类似,其差别表现在继承与派生时对派生类的影响不同,详见第七章。

对象定义的语法

l  类名  对象名;

l  例:Clock  myClock;

类成员的访问权限

l  类中成员互相访问

n  直接使用成员名访问

l  类外访问

n  使用“对象名.成员名”方式访问 public 属性的成员

类的成员函数

l  在类中说明函数原型;

l  可以在类外给出函数体实现,并在函数名前使用类名加以限定;

l  也可以直接在类中给出函数体,形成内联成员函数;

l  允许声明重载函数和带默认参数值的函数。

内联成员函数

l  为了提高运行时的效率,对于较简单的函数可以声明为内联形式。

l  内联函数体中不要有复杂结构(如循环语句和switch语句)。

l  在类中声明内联成员函数的方式:

n  将函数体放在类的声明中。

n  使用inline关键字。


下一节:类和对象的程序举例

返回《C++语言程序设计基础》慕课在线视频列表

类和对象的定义课程教案、知识点、字幕

大家好

欢迎回来继续学习

C++语言程序设计

这一节我们来学习

类和对象的定义

我们知道对象是

现实世界中的对象的模拟

那么我们对同类型的对象

进行概括 进行抽象

就形成了类

对象是类的实例

那么我们要使用类的功能呢

就要定义对象

通过对象去使用

在类里面定义好的功能

现在我们首先来看

设计一个类意味着什么

实际上我们设计一个类

就意味着设计一个类型

设计一个新的类

也就是定义为一个新的类型

那么定义这个新类型时候

我们要关注哪些问题呢

首先我们要关心

这个类型的合法值是什么

这个类型应该有什么样的函数

有什么样的操作符

我们知道基本数据类型

当你定义这个类型的变量的时候

不仅意味着

你定义了这个变量的存储形态

同时也意味着

你定义了这个变量

它应该遵循什么样的运算规则

能够进行哪些运算

那么我们定义一个新的类

既然是定义新类型

所以也应该关心这个类

应该有什么样的函数和操作符

还有我们还要定义

新类型的对象

它如何被创建

如何被销毁

还有对象怎么进行初始化

和赋值

我们知道定义一个基本类型

变量的时候

我们都可以在定义变量的时候

对变量进行初始化

那么定义对象的时候

同样我们也需要

能够对对象进行初始化

这一章我们要介绍

对象的初始化

那么如何给对象赋值呢

默认的有一个赋值功能

在第八章我们还要讲

重载赋值运算符

也就是自定义这个赋值功能

还有对象

也应该可以作为函数的参数

进行传递的

那么我们如何把对象

作为函数的参数进行传递

也是我们在定义类的时候

应该关注的问题

最后呢

我们要清楚谁将使用

这个类型的对象

还有它的对象的成员

好 下面呢我们来看一下

语法上怎么样去定义一个类

那么大家看这个就是

定义类的语法形式

要用关键字class开头

后面就是类名称

就是我们程序员

要为这个类自己起一个标志符

然后我们就看到

在这一对大括号里面

有类的成员

这个类的成员呢

它又分成公有成员 私有成员

和保护成员

不管是数据成员

还是函数成员

都可以分成这样三类

我们知道类里面的属性

是用数据成员表示的

类里面的功能是用函数成员

表示的

那么数据成员 函数成员

都分成公有的public

私有的private

和保护型protected

那么这里面的公有成员

是类的外部接口

我们在定义类的时候

还可以给类的数据成员

指定类内的初始值

这个类内的初始值呢

是在构造对象的时候

用于初始化对象用的

现在我们来看一个类内

初始化的例子

现在我们再来看这个

Clock类里面的定义

这一次给三个数据成员

都设置了初始值

这种在类体里面设置的初始值

叫做类内的初始值

当我们构造

这个Clock为对象的时候

如果有构造函数

对它进行初始化呢

就会按照构造函数

指定的值进行初始化

如果构造函数没有对

这几个数据成员进行初始化

那么就会用这个类内的初始值

构造函数呢

一会稍后我们就会给大家

仔细介绍的

好 我们刚才看到

这个类的定义的语法形式了

我们知道类的成员

它分成公有成员 私有成员

和保护成员

三种访问控制属性

那么公有成员呢

就是在关键字public后面

声明的成员

公有成员是一个类

与外部的接口

任何外部函数都可以访问

类的共有数据

和共有函数

而私有成员是在关键字

private后面声明的

私有成员可以说

它是对外屏蔽了

在外面那是看不见

一个类的私有成员的

所以私有成员

只允许本类中的函数来访问

类外部的任何函数

都不能访问一个类的私有成员

那当然了

很多事情都是有例外的

我们在后面的章节呢

也就是下一章

也会给大家讲

我们可以用某种办法

授权类外的函数访问私有成员

那就是第五章要讲的友元

那么目前我们主要记住

私有成员在类外是不可访问的

那么如果

我们在定义类的成员的时候

紧跟着类名之后的那个大括号

就声明成员

那么这个时候

如果不写

任何访问控制属性的关键字

默认的话这个成员是私有成员

也就是说

如果你在类体的最开头

定义私有成员的话

那么这个private关键字

它是可以省略的

那么保护成员呢

现在看起来

与私有成员很像

它的差别是在什么地方呢

是在继承和派生的时候

我们才看得出来

保护成员与私有成员

它们有什么不同

所以在第七章

我还会给大家详细介绍

保护型的成员

目前呢

大家只要会用公有成员

和私有成员就可以了

当我们定义好一个类以后

怎么样去使用类里面的功能呢

通常我们都要定义一个对象

然后通过对象去调用

它的成员函数

这样来使用类的功能

对象是类的一个实例

类呢

它是一种一类对象的一种设计

当然我们要使用的时候呢

我们肯定是通过一个具体对象

一个个实例去使用这些功能的

就像现实世界中

我们也是进行分类的

比如说教师是一类

那并不是教师这个类型

今天站在这儿给你讲课

而是一个教师个体

某一个具体的教师

站在你面前给你讲课

那在程序中也是一样的

我们要使用类里面

预定义好的功能

就要通过类的对象

所以接下来我们来学习

如何定义类的对象

对象定义的语法是这样的

首先前面是类名

然后后面跟个对象名

这个很像我们定义

基本类型的变量

比如说我们定义int类型的变量

也是这样

类型在前面 变量名在后面

现在呢是类名在前面

对象名在后面

一个类中呢

通常有多个函数成员

数据成员

那么类中的成员

它们之间能不能互相访问呢

可以的

类的成员

它们之间要互相访问的话

直接用成员名就可以访问

如果我们要从类外

来访问类的成员

那就要通过对象来访问

具体的访问形式

就是对象名.成员名的方式

那么这样的方式能访问的

只是类的公有成员

私有成员在类外是不能访问的

接下来呢

我们就来看在类中

我们应该如何去定义

它的成员函数

首先我们需要在类中

说明函数的原型

然后我们在类外

给出函数体的实现

那么实现这个函数的时候呢

跟我们定义普通的函数

其实是很像的

唯一一个区别就是

在函数名前面

要使用类名来加以限定

也就是说

这个函数

它不是一个普通的全局函数

要说明它是属于哪个类的

它是类的成员函数

当然我们也可以在类体中

直接给出函数体定义

那么这个就是内联的成员函数

内联的成员函数

它必须充分简单

这跟我们前面讲过的

内联函数是一样的

在类里面声明成员函数的时候呢

同样也允许函数重载

也允许函数的参数带有默认值

下面我们就来看看

关于内联的成员函数

看看内联成员函数的定义

有哪些规则

我们使用内联成员函数

是为了提高运行时的效果

也就是说

对于比较简单的函数

我们通常可以把它声明为

内联的形式

内联函数的函数体中

不应该有复杂的结构

比如说不应该有循环语句

和switch语句

那么在类中声明内联成员函数

实际上有两种方式

一种就是把函数体

直接写在类的类体中

另外一种方式就是在类体中

只声明函数的原型

然后在类外实现函数

只不过实现函数体的时候

要用inline这个关键字

C++语言程序设计基础课程列表:

第1章 绪论

-导学

--第1章导学

-计算机系统简介

--计算机系统简介

--计算机系统简介 测试题

-计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展

--计算机语言和程序设计方法的发展 测试题

-面向对象的基本概念

--面向对象的基本概念

--面向对象的基本概念 测试题

-程序的开发过程

--程序的开发过程

--程序的开发过程 测试题

-信息的表示和储存

--计算机中的信息与存储单位

--计算机的数字系统

--数据的编码表示

--信息的表示和储存 测试题

-实验指导

--实验一:VS开发环境介绍

第2章 C++简单程序设计(一)

-导学

--第二章导学

-C++语言概述

--C++的特点和程序实例

--C++字符集和词法记号

--C++语言概述 测试题

-基本数据类型、常量、变量

--基本数据类型、常量、变量

--程序举例

--基本数据类型、常量、变量 测试题

-运算与表达式

--算术运算与赋值运算

--逗号运算、关系运算、逻辑运算和条件运算

--Sizeof运算、位运算

--运算优先级、类型转换

--运算与表达式 测试题

-实验二:简单程序设计(上)

--实验二:简单程序设计(上)

第2章 C++简单程序设计(二)

-数据的输入和输出

--数据的输入和输出

--数据的输入和输出 测试题

-选择结构

--if语句

--switch语句

--选择结构 测试题

-循环结构

--循环结构——while语句

--do-while语句

--for语句

--嵌套的控制结构、其他控制语句

--循环结构 测试题

-自定义类型

--自定义类型

--自定义类型

-第2章小结

--第二章小结

-实验二:C++简单程序设计(下)

--实验二C++简单程序设计(下)

第3章 函数

-导学

--导学

-函数定义

--函数定义

--函数定义 测试题

-函数调用

--函数调用(例3-1)

--例3-2

--例3-3

--例3-4

--例3-5

--例3-6

--函数调用 测试题

-嵌套与递归

--函数的嵌套调用(例3-7)

--函数的递归调用(例3-8)

--例3-9

--例3-10

--嵌套与递归 测试题

-函数的参数传递

--函数的参数传递

--函数的参数传递 测试题

-引用类型

--引用类型(例3-11)

--引用类型 测试题

-含有可变参数的函数

--含有可变参数的函数

--含有可变参数的函数 测试题

-内联函数

--内联函数(例3-14)

--内联函数 测试题

-constexpr函数

--constexpr函数

--CONSTEXPR函数课后习题

-带默认参数值的函数

--带默认参数值的函数

--默认参数值例(3-15)

--带默认参数值的函数 测试题

-函数重载

--函数重载(例3-16)

--函数重载 测试题

-C++系统函数

--C++系统函数(例3-17)

--C++系统函数习题

-第3章小结

--第三章小结

-实验三(上)函数的应用

--实验三(上)函数的应用

-实验三(下)函数的应用

--实验三(下)函数的应用

第4章 类与对象

-导学

--导学

-面向对象程序的基本特点

--面向对象程序的基本特点

--面向对象程序的基本特点 测试题

-类和对象

--类和对象的定义

--类和对象的程序举例

--类和对象 测试题

-构造函数

--构造函数基本概念

--构造函数例题(1)——例4-1

--构造函数例题(2)——例4-2

--委托构造函数

--复制构造函数

--复制构造函数调用举例

--构造函数 测试题

-析构函数

--析构函数

--析构函数 测试题

-类的组合

--类的组合

--类的组合程序举例

--前向引用声明

--类的组合 测试题

-UML简介

--UML简介

--UML简介课后习题

-结构体与联合体

--结构体(例4-7)

--联合体(例4-8)

--结构体与联合体 测试题

-枚举类

--枚举类

--枚举类 测试题

-第4章小结

--第四章小结

-实验四(上)

--实验四(上)

-实验四(下)

--实验四(下)

第5章 数据的共享与保护

-导学

--导学

-标识符的作用域与可见性

--标识符的作用域与可见性

--标识符的作用域与可见性 测试题

-对象的生存期

--对象的生存期

--对象的生存期 测试题

-类的静态成员

--静态数据成员(例5-4)

--静态函数成员(例5-5)

--类的静态成员 测试题

-类的友元

--类的友元(例5-6)

--类的友元 测试题

-共享数据的保护

--共享数据的保护(例5-7)

--共享数据的保护 测试题

-多文件结构和预编译命令

--多文件结构和预编译命令(例5-10)

--多文件结构和预编译命令 测试题

-第5章小结

--小结

-实验五

--实验五

第6章 数组、指针与字符串(一)

-导学

--导学

-数组的定义与初始化

--数组的定义与使用

--数组的储存与初始化

--一维数组应用举例

--数组的定义与初始化 测试题

-数组作为函数的参数

--数组作为函数参数(例6-2)

--数组作为函数的参数 测试题

-对象数组

--对象数组

--对象数组 测试题

-基于范围的for循环

--基于范围的for循环

-指针的定义和运算

--指针的概念、定义和指针运算

--指针的初始化和赋值

--指针的算术运算、关系运算

--指针的定义和运算 测试题

-综合实例

--综合实例

-实验六(上)

--实验六上

第6章 数组、指针与字符串(二)

-指针与数组

--用指针访问数组元素

--指针数组

--指针与数组 测试题

-指针与函数

--以指针作为函数参数

--指针类型的函数

--指向函数的指针

--指针与函数 测试题

-对象指针

--对象指针

--对象指针 测试题

-动态内存分配

--动态分配与释放内存

--申请和释放动态数组(一)

--申请和释放动态数组(二)

--动态内存分配 测试题

-智能指针

--智能指针

-vector对象

--vector对象

--vector对象 测试题

-对象复制与移动

--深层复制与浅层复制

--移动构造

--对象复制与移动 测试题

-字符串

--C风格字符串

--string类

--字符串 测试题

-第6章小结

--第六章小结

-综合实例

--综合实例

-实验六(下)

--实验六(下)

类和对象的定义笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。