第2章 掌握C++
参考: https://blog.csdn.net/u014162133/article/details/46573873
1、C++主要特点:
封装性(Encapsulation):把数据与操作数据的函数组织在一起,使程序结构更加紧凑,提高类内部数据的安全性。
继承性(Inheritance):增加了软件的可扩充性及代码重用性;
多态性(Polymorphism):使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用
2、C++中几个重要的知识点
(1) 多态:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。
(2) 如何区分覆盖和隐藏呢?
函数的覆盖是发生在派生类与基类之间,两个函数必须完全相同,并且都是虚函数。那么不是这种情况的,就是隐藏。
当隐藏发生时,如果在派生类的同名函数中想要调用基类的被隐藏函数,可以使用"基类名::函数名(参数)"的语法形式。
(3) 抽象类:凡是含有纯虚函数的类叫做抽象类。
(4) 定义结构体和类时,例如
class Point
{
int x;
int y;
};
在右侧花括号后面一定要加上分号,结构体成员默认是public的,而类成员默认是private的
(5) 类的继承及类中成员的访问特性
(6) 强制类型转换。如果CFish从CAnimal派生而来。CFish类的对象也是一个CAnimal对象,将CFish类型转换为CAnimal类型不用强制类型转换,C++编译器会自动进行这种转换。反过来,将CAnimal类型转换为CFish类型,则需要强制类型转换,否则编译会报错。
(7) 在子类中调用父类的带参数的构造函数
(8) #include <xxx.h>与#include "xxx.h"的区别:
搜索头文件路径的顺序不一样,而且<>不查找当前工作目录,""查找当前工作目录
(9) 引用:引用经常用在函数的传参上。
(10) 解决头文件重复包含问题
方法一:#pragma once
方法二:
(11) VC++程序编译链接的原理与过程