我在B站学习 清华大学教授带你学习c++(进阶)类与对象
B站av11459203的一系列视频,跳过了基础篇直接进入进阶,从此难度开始加大。这里做出一些笔记分享一下。
我是1.25速度看的。。对应分P 34-36
对象:现实中对象的模拟,具有属性和行为,对象是类的实例
类:同一类对象共同属性和行为
定义对象时,通过构造函数初始化
删除对象时,通过析构函数释放资源
面向对象程序设计特点
抽象:
对同一类对象的共同属性和行为进行概括,形成类
首先注意问题的本质及描述,其次是实现过程和细节
数据抽象:描述某类对象的属性或状态
代码(方法)抽象:描述对象的共有特征或具有的功能
抽象的实现:类
抽象实例 钟表 数据抽象 int hour,minute,second 代码(方法)抽象 setTime(),showTime()
class Clock{ public: void setTime(int newH,int newM,int newS); void showTime(); private: int hour,minute,second; };
封装
将抽象出的数据,代码封装在一起,形成类
目的:增强安全性和简化编程,使用者不必了解具体的实现细节而只要通过外部接口,以特定的访问权限,来使用类的成员
继承
在已有类的基础上,进行扩展形成新的类
多态
同一名称,不同的功能实现方式
目的:达到行为标识统一,减少程序中标识符的个数
设计类应该想到什么....
类型的合法值是什么?
有什么样的函数和操作符
对象如何创建和销毁,如何进行初始化和赋值?
对象作为函数的参数如何以值传递?
谁来使用类的对象成员?
类定义的语法形式
1 public: 2 void setTime(int newH,int newM,int newS); 3 void showTime(); 4 private: 5 int hour=0,minute=0,second=0;//成为类内初始值
公有成员
是类与外部的接口,任何外部函数都可以访问。
私有成员
只允许本类的函数访问,而类外部的任何函数不能访问
在类名称开头声明则默认为private(可以不写)
保护成员
不在这里介绍
对象定义语法 类名 对象名;
从类外访问成员使用“对象名.成员名”方式访问public成员
类的成员函数
在类中声明函数原型
可以在类外给出函数体的实现,并在函数名前使用类名加以限定
也可以在类中给出函数体,形成内联成员函数(见下图)
允许声明重载函数和带默认参数值的函数