摘要:
面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况, 不同之处在于: OOP能处理类型在程序运行之前都未知的情况, 而在泛型编程中, 在编译时就能获知类型了. 函数模板 模板是C++中泛型编程的基础, 一个模板就是一个创建类或函数的蓝图或者说公式. 模板定义以关键字template 阅读全文
摘要:
OOP: 概述 面向对象程序设计的核心思想是 数据抽象 , 继承 和 动态绑定 . 通过数据抽象, 我们可以实现类的接口与实现的分离; 使用继承, 可以定义相似的类型并对其相似关系建模; 使用动态绑定, 可以在一定程度上忽略相似类型的区别, 而以统一的方式使用它们的对象. 继承 基类负责定义在层次关 阅读全文
摘要:
基本概念 重载运算符是具有特殊名字的函数: 它们的名字由关键字operator和其后要定义的运算符号共同组成. 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多. 对于二元运算符来说, 左侧运算对象传递给第一个参数, 而右侧运算对象传递给第二个参数. 除了重载的函数调用运算符operato 阅读全文
摘要:
拷贝, 赋值与销毁 当定义一个类时, 我们显示地或隐式地指定在此类型的对象拷贝, 移动, 赋值和销毁时做什么. 一个类通过定义5种特殊的成员函数来控制这些操作, 包括: 拷贝构造函数 , 拷贝赋值运算符 , 移动构造函数 , 移动赋值运算符 和 析构函数 . 编译器可以合成这些成员函数, 其他的函数 阅读全文
摘要:
动态内存与只能指针 静态内存 用来保存局部static对象, 类static数据成员以及定义在任何函数之外的变量. 栈内存用来保存定义在函数内的非static对象. 分配在静态或栈内存中的对象由编译器自动创建和销毁. 栈中的对象, 仅在其定义的程序块运行时才存在; static对象在使用之前分配, 阅读全文
摘要:
[toc] 使用关联容器 关联容器与顺序容器有着根本的不同: 关联容器中的元素是按关键字来保存和访问的, 按顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 关联容器支持高效的关键字查找和访问. 有两个主要的关联容器类型: map和set. map: map中的元素是一些关键字—值(key 阅读全文
摘要:
概述 泛型算法: 称它们为”算法“, 是因为它们实现了一些经典算法的公共接口, 如搜索和排序; 称它们是”泛型的“, 是因为它们可以用于不同类型的元素和多种容器类型, 不仅包括标准库类型, 还包括内置的数组类型. 大多数算法都定义在algorithm中, 标准库还在头文件numeric中定义了一组数 阅读全文