Jao Blog

C++ 模板

模板是泛型编程的基础,泛型编程是以一种独立于任何特定类型的方式编写代码。 使用模板可以下厨类型无关的代码,编译器会在使用时生成具体类型版本。 简单来说,模板就是在实例化函数或类的时候,把类型当作参数传进去或者编译一起自动推断类型,然后分别生成不同类型的函数或者类。 函数模板 模板函数定义的一般形式如下: template <typename type> ret-type...

C++ 动态内存

C++程序中,内存分为: 栈:在函数内部声明的所有变量都将占用栈内存。 堆:程序中未使用的内存,在程序运行时可用于动态分配内存。 对于确定的变量,通常在栈上进行内存空间申请。 对于无法提前预知需要多少内存来存储某个定义变量的特定信息,所需内存的大小需要在运行时才能确定时,可以使用特殊的运算符为给定类型的变量在运行时分配堆内的内存。 申请动态内存时使用new,不需要动...

C++ 重载运算符和重载函数

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 函数重载...

C++ 继承

当创建一个类时,可以不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。 基类&派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。 定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下: class derived-class: access...