c++的“++”是自增的意思,c++是C语言的基础上假了部分内容。

第一个+增加了模板template<>,异常处理现代语言处理新特性
第二个+增加了增加了面向对象思想

面向对象可以看做:属性(数据)+行为(函数)。

面向对象
           封装            继承             多态
将数据、算法捆绑形成对象。代码的重用,充分利用已存在的类别。不同情况下具有不同形式的能力,实现了共享外部接口。


类成员访问控制:

public构造函数、析构函数、公有访问接口

protected

自身访问、下级子类访问
private仅自身可访问

抽象封装:将现实事物转变为c++中的各个类。

c++对象的内存模型:

    对象的第一个成员变量地址跟整个对象的地址相同,类的成员函数放在特殊位置(),所有对象共用这份成员函数。

wKioL1jToaGB0GWLAABeSinl2jU891.png-wh_50

this指针隐式的指向类成员变量。当我们在成员函数中访问类的成员变量时,this指针指向的是调用这个函数的对象。所以对成员变量的访问也就变成了对这个对象所属的成员变量的访问。

指针的运算:指针加一或减一会使指针增加减少对应数据类型的长度。

传指针

效率高、可以同时传入传出参数
传值形式简单自然便于理解、代码可读性高
传引用效率高、可以同时传入传出参数、形式简单自然便于理解、代码可读性高

*尽可能的使用引用不得已时才使用指针。

异常处理:

        关键字:throw--------抛出一个描述了错误信息的字符串异常。

        关节字:catch--------捕获throw抛出的字符串异常并对其进行处理。

预处理:用头文件的内容替换掉源文件中对应的#include语句。

名字空间:在一些大型系统中,因为多数人共同参与开发,即使采用源文件头文件分离的方法,也难以保证函数数据声明的唯一性,为解决这个问题,c++提供了名字空间(namespce)来规划和管理程序结构。

wKiom1jXcNCyhO67AABGooMEEBg401.png-wh_50

宏定义:#define 标识字符串

            将代码中的宏名换成宏定义的字符串。

const:  使用const关键字可以使编译器检测出对常量的非法操作,以防止常量被修改。

//声明一个整型常量并赋初值为1

const int number = 1;

//声明一个Teacher类型的常量的对象

const Teacher MrChen;

//声明一个常量整型指针,指针所指向的变量的值不能修改,也就是一个常量

const int * pumber ;

// 声明一个常量整型指针,意义同上

int const *pNumber;

//声明一个整型常量指针,指针不能修改

int * const pNumber = &number;

//声明一个常量整型常量指针

//指针和指针所指向的变量值都不能修改

const int * const pNumber = &number;

//声明一个常量整型引用

const int & number = number;

*号把声明语句分割成两个部分。*const指针不能修改,const*指针指向的变量值不能修改。


STL标准模板库

STL = 算法 + 容器 + 迭代器

从广义上有算法(algorithm)、容器(container)、迭代器(iterator)三大核心

此外还有适配器(container adaptor)、函数对象(functor)、

函数模板:typename

template <typename T>

wKiom1jXiSHxMRAnAABMOXlvY0c770.png

wKiom1jZFvuAYPNHAADxcjmh9Co162.png-wh_50

通用算法:以迭代器类型为参数,和数据所在容器的具体实现相互相分离

wKiom1jZGJnj9dZ2AAA6eXeBtyI597.png