孙鑫VC第二课学习笔记
来源:互联网 发布:和老师约啪 知乎 编辑:程序博客网 时间:2024/05/03 16:59
孙鑫VC第二课学习笔记
掌握C++
知识点一
知识点二
在C语言中,结构体Struct中是不能包含函数的,但是在C++中却是可以的。
Struct的成员默认是Public,而Class的成员默认是Private。
Public表示数据成员能够在类外面被访问。
Private表示数据成员不能够在类外面被访问,只能在类内部访问。
Protected表示子类和父类之间的关系,在类外面也是不能被访问的。
知识点三
类和对象的概念:
类是抽象出一些事物共有的属性。
对象是具有具体的属性值的事物。
举例说明:比如说电脑,我们可以定义一个电脑的类,它具有一些基本的属性,比如说电脑有一个主板,一个CPU等。那什么是电脑的对象呢?一台具体的电脑。比如说你买了一台电脑,它的主板的华硕的,CPU是Intel的。类本身是抽象,本身不可能消亡,但是对于类是有生命的,一台电脑你用了几年可能就坏了。
类的实例通常情况下就等于类的对象。
知识点四
构造函数与类名相同。
一.构造函数最重要的作用是创建对象本身。
二.C++规定,每个类必须有一个构造函数,没有构造函数,就不能创建任何对象。
三.C++又规定,如果一个类没有提供任何的构造函数,则C++提供一个默认的构造函数(由C++编译器提供),这个默认的构造函数是一个不带参数的构造函数,它只负责创建对象,而不做任何的初始化工作。
四.只要一个类定义了一个构造函数,不管这个构造函数是否是带参数的构造函数,C++就不再提供默认的构造函数。也就是说,如果一个类定义了一个带参数的构造函数,还想要无参数的构造函数,则必须要自己定义了。
析构函数
一.当一个对象生命周期结束时,其所占有的内存空间就要被收回,这个工作就是由析构函
数来完成。
二.析构函数是“反向”的构造函数,析构函数不允许有返回值,更重要的是析构函数不允
许带参数,并且一个类只能有一个析构函数。
三.析构函数的作用正好与构造函数相反,对象超出其作用范围,对应的内存空间被系统收
回或被程序delete删除时,析构函数被调用。
五.根据析构函数的这种特点,我们可以在构造函数中初始化对象的某些成员变量,给其分
配内存空间(堆内存),在析构函数中释放对象运行期间所申请的资源。
重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载。
第一种情况:void output()
Int output()
第二种情况:void output(int a, int b=5)
Void output(int a)
第一种情况是不能构成函数的重载,对于第二种情况,调用output(a)时也是不可以的。
知识点五
知识点六
知识点七
如果A继承了B,那么构造函数和析构函数之间调用顺序。
B()->A()->~A()->~B()
知识点八
函数覆盖是发生在父类和子类之间的。当父类和子类具有相同的函数时,我们实例化子类时,调用的是子类的函数。
知识点九
一个数据类型的转换,比如说一个char和int进行转换,作为一个类型转换,那么他们之间能不能进行类型转换主要看内存模型是否匹配。比如将int的值付给char,只有一个字节的内容能够放到char,另外3个字节被截断,就会丢失精度,但是反过来,肯定是可以的。
一个子类的内存布局:
父类对象的内存
子类继承的部分
知识点十
多态性:当C++编译器在编译的时候,发现父类的某个函数是虚函数,这个时候C++会采用迟绑定的技术,在运行时,依据对象的类型来确认调用的哪个函数,这种能力就是C++的多态性。
纯虚函数:virtual void XXX() = 0;含有纯虚函数的类叫做抽象类,是不能被实例化的,如果子类继承了抽象类,但是没有实现纯虚函数,也是抽象类,不能被实例化。
知识点十一
指针变量本身需要内存空间,而引用不需要另外的内存空间,只是变量的别名。
知识点十二
每个CPP文件单独编译,头文件不参与编译,最后由链接器将各个obj文件和C++的标准库函数标准类库link成可执行文件。
如何防止头文件重复引用
#ifndef _XXX_H_
#define _XXX_H_
#endif
- 孙鑫VC第二课学习笔记
- VC++学习笔记第二章
- 孙鑫VC学习笔记:第二讲 掌握C++
- 孙鑫VC学习笔记:第二讲 掌握C++
- 孙鑫VC学习笔记:第二讲 掌握C++
- VC视频教程笔记(第二课)
- VC++.NET学习笔记(第二章)
- VC++学习笔记第二章(1)
- vc++深入详解第二章学习笔记
- VC++深入详解第二章学习笔记
- 孙鑫vc++学习笔记
- 《VC++深入详解》学习笔记 第二章 掌握C++
- 孙鑫vc学习笔记_第一课
- 孙鑫VC第一课学习笔记
- 孙鑫VC第三课学习笔记
- 孙鑫VC第四课学习笔记
- 孙鑫VC第五课学习笔记
- C++学习第二课笔记
- 【转】对攻读计算机研究生的看法 (我又加了1篇文章,也经典值得一读)
- 应用框架的设计与实现——.NET平台(9 消息队列服务代码分析)
- 什么是 DOORS?
- Windows Mobile开发 MSDN学习例程(一)
- a story remind you to me
- 孙鑫VC第二课学习笔记
- SmartUpload上传 ENCTYPE="multipart/form-data"问题
- 请教
- 模仿IE自动完成功能,读取输入框存取记录
- 非常酷的五星展开菜单显示效果
- IT从业人员必看的10个论坛
- 现在正在写一个搜索功能代码 需要用到正则表达式
- 月季流水账
- 验证空格的正则表达式