01 2019 档案
模板与泛型编程——重载与模板,可变函数模板,模板特例化
摘要:一、重载与模板 函数模板可以被另一个模板或普通非模板函数重载。与往常一样,名字相同的函数必须具有不同数量或类型的参数。 如果涉及函数模板,则函数匹配规则会在以下几方面受到影响: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可 阅读全文
posted @ 2019-01-31 19:43 acgame 阅读(481) 评论(0) 推荐(0)
模板与泛型编程——模板实参推断
摘要:一、模板实参推断 对于函数模板,编译器利用调用中的函数实参来确定其模板参数。从函数实参来确定模板实参的过程被称为模板实参推断。在模板实参推断过程中,编译器使用函数调用中的实参类型来寻找模板实参,用这些模板实参生成的函数与给定的函数调用最为匹配。 1、类型转换与模板类型参数 与非模板函数一样,我们在一 阅读全文
posted @ 2019-01-30 23:49 acgame 阅读(357) 评论(0) 推荐(0)
模板与泛型编程——定义模板
摘要:一、定义模板 1、函数模板 模板定义以关键字template开始,后跟一个模板参数列表,这是一个逗号分隔的一个或多个模板参数的列表,用<>括起来。在模板定义中,模板参数列表不能为空。模板参数表示在类或函数定义中用到的类型或值。当使用模板时,我们(隐式地或显式地)指定模板实参,将其绑定到模板参数上。 阅读全文
posted @ 2019-01-30 13:04 acgame 阅读(254) 评论(0) 推荐(0)
面向对象程序设计——抽象基类,访问控制与继承,继承中的类作用域,拷贝函数与拷贝控制
摘要:一、抽象基类 1)纯虚函数 和普通的虚函数不同,一个纯虚函数无须定义。我们通过在函数体的位置(即在声明语句的分号之前)书写=0就可以将一个虚函数说明为纯虚函数。其中,=0只能出现在类内部的虚函数声明语句处。 值得注意的是,我们也可以为纯虚函数提供定义,不过函数体必须定义在类的外部。也就是说,我们不能 阅读全文
posted @ 2019-01-28 19:33 acgame 阅读(367) 评论(0) 推荐(0)
面向对象程序设计——概述,定义基类和派生类,虚函数
摘要:一、OOP:概述 面向对象程序设计的核心思想是数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口和实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。 1)继承 通过继承联系在一起的类构成一种层次关系。 阅读全文
posted @ 2019-01-27 19:07 acgame 阅读(1236) 评论(0) 推荐(0)
重载运算与类型转换——函数调用运算符,重载、类型转换与运算符
摘要:一、函数调用运算符 如果类重载了函数调用运算符,则我们可以像使用函数一样使用该类的对象。因为这样的类同时也能存储状态,所以与普通的函数相比它们更加灵活。 1 #include <iostream> 2 #include <string> 3 #include <vector> 4 5 class a 阅读全文
posted @ 2019-01-24 15:30 acgame 阅读(805) 评论(0) 推荐(0)
重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符
摘要:一、基本概念 重载的运算符时具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。 重载运算符函数的参数数量与该运算符作用的运算对象数量一样多。一元运算符有一个参数,二元运算符有两个。对于二元运算符来说, 阅读全文
posted @ 2019-01-23 23:00 acgame 阅读(274) 评论(0) 推荐(0)
拷贝控制——拷贝控制和资源管理,交换操作,对象移动
摘要:一、拷贝控制和资源管理 通常,管理类外资源的类必须定义拷贝控制成员,这种类需要通过析构函数来释放对象所分配的资源。 为了定义这些成员,我们首先必须确定此类型对象的拷贝语义。一般来说,有两种选择:可以定义拷贝操作,使类的行为看起来像一个值或者像一个指针。 类的行为像一个值,意味着它应该也有自己的状态。 阅读全文
posted @ 2019-01-22 15:27 acgame 阅读(506) 评论(0) 推荐(0)
拷贝控制——拷贝、赋值与销毁
摘要:当定义一个类时,我们显示地或隐式地指定在此类型的对象拷贝、移动、赋值和销毁时做什么。一个类通常定义五种特殊的成员函数来控制这些操作,包括:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。拷贝和移动构造函数定义了当用同类型的另一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义 阅读全文
posted @ 2019-01-19 21:58 acgame 阅读(374) 评论(0) 推荐(0)
动态内存——动态数组
摘要:一、动态数组 为了支持一次性为很多元素分配内存的需求,C++语言和标准库提供了两种一次分配一个对象数组的方法。C++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组。标准库中包含了一个名为allocator的类,允许我们将分配和初始化分离。使用allocator通常会提供更好的性能和更 阅读全文
posted @ 2019-01-18 14:57 acgame 阅读(894) 评论(0) 推荐(0)
动态内存——动态内存与智能指针
摘要:全局对象在程序启动时分配,在程序结束时销毁。对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。局部static对象在第一次使用前分配,在程序结束时销毁。 除了自动和static对象外,C++还支持动态分配对象。动态分配的对象的生命期与它们在哪里创建是无关的,只有当显示地被释放时 阅读全文
posted @ 2019-01-17 10:30 acgame 阅读(434) 评论(0) 推荐(0)
关联容器----关联容器概述,关联容器操作,无序容器
摘要:关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。与之相对,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。 关联容器支持高效的关键字查找和访问。两个主要的关联容器类型是map和set。map中的元素是一些关键字 值对:关键字起到索引的作用,值表示与索引相关联的数 阅读全文
posted @ 2019-01-11 00:18 acgame 阅读(641) 评论(0) 推荐(0)
泛型算法----再探迭代器,泛型算法结构,特定容器算法
摘要:一、再探迭代器 除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器。这些迭代器包括以下几种: a、插入迭代器:这些迭代器被绑定到一个容器上,可用来向容器插入元素。 b、流迭代器:这些迭代器被绑定到输入或输出流上,可用来遍历所关联的IO流。 c、反向迭代器:这些迭代 阅读全文
posted @ 2019-01-09 21:03 acgame 阅读(313) 评论(0) 推荐(0)
泛型算法----概述,初识泛型算法,定制操作
摘要:一、概述 标准库定义了一组泛型算法:称它们为“算法”,是因为它们实现了一些经典算法的公共接口,如排序和搜索;称它们是“泛型”,是因为它们可以用于不同类型的元素和多种容器类型(不仅包括标准库类型,如vector或list,还包括内置的数组类型)。 大多数算法都定义在头文件algorithm中。标准库还 阅读全文
posted @ 2019-01-08 19:53 acgame 阅读(437) 评论(0) 推荐(0)
顺序容器----顺序容器操作,vector对象如何增长,额外的string操作,容器适配器
摘要:一、顺序容器操作 1、向顺序容器添加元素 向顺序容器(array除外)添加元素的操作: forward_list有自己专有版本的insert和emplace。forward_list不支持push_back和emplace_back。vector和string不支持push_front和emplac 阅读全文
posted @ 2019-01-07 14:57 acgame 阅读(295) 评论(0) 推荐(0)
顺序容器----顺序容器概述,容器库概览
摘要:一、顺序容器概述 一个容器就是一些特定类型对象的集合。顺序容器为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。 顺序容器类型: string和vector将元素保存在连续的内存空间中。由于元素是连续存储的,由元素的下标来计算其地址是非常快速的。 阅读全文
posted @ 2019-01-05 13:45 acgame 阅读(278) 评论(0) 推荐(0)
IO库----IO类,文件输入输出,string流
摘要:一、IO类 1、IO库类型和头文件表: istream,wistream 从流读取数据 ostream,wostream 向流写入数据 iostream,wiostream 读写流 ifstream,wifstream 从文件读取数据 ofstream,wofstream 向文件写入数据 fstre 阅读全文
posted @ 2019-01-03 22:03 acgame 阅读(511) 评论(0) 推荐(0)
类----其他特性,作用域,构造函数,静态成员
摘要:一、类的其他特性 1、类成员再探 1)定义一个类型成员 除了定义数据和函数成员之外,类还可以自定义某种类型在类中的别名。由类定义的类型名字和其他成员一样存在访问限制,可以是public或者private中的一种。用来定义类型别名的成员必须先定义后使用,因此,类型成员通常出现在类开始的地方。 1 // 阅读全文
posted @ 2019-01-01 23:29 acgame 阅读(274) 评论(0) 推荐(0)