模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。
分类:
编程语言 时间:
2016-03-04 20:44:59
阅读次数:
344
1. 多重继承 在多继承中,如果派生类的多个基类出现重名函数,为了避免出现歧义,则可以在派生类中重写这些重名函数。 2. 菱形继承问题,成员冗余(成员变量的冗余,无问题。成员函数的冗余,可能会出现问题)。函数调用出现歧义。 使用虚继承解决菱形继承问题。 3. 模板 函数模板:有类型参数的函数。 如何
分类:
编程语言 时间:
2016-03-04 14:30:58
阅读次数:
212
1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计。它的最大特点是把函数使用的数据类型作为参数。 函数模板的声明形式为: template<typename 数据类型参数标识符> <返回类型><函数名>(参
分类:
编程语言 时间:
2016-02-28 11:07:20
阅读次数:
257
场景:
1. C++11 引入了std::move,它可以高效率的从一个左值资源移动到另一个左值资源里,
这个过程不需要再创建新的资源. 这对std::string,std::vector这种标准库的资源
操作更加精炼.使用标准库时会大量使用这个std::move模板函数.
2. 在std::move的源码里又涉及到std::remove_reference 模板结构体,这个结构体又涉及到
"右值引用声明(Rvalue Reference Declarator: &&)", 所以这里还是讲...
分类:
编程语言 时间:
2016-02-19 10:47:52
阅读次数:
313
一、关于STL STL(Standard Template Library,标准模板库)是C++语言标准中的重要组成部分。STL 以模板类和模板函数的形式为程序员提供了各种数据结构和算法的精巧实现,程序员如果能够充分地利用STL,可以在代码空间、执行时间和编码效率上获得极大的好处。 STL现在是C+
分类:
其他好文 时间:
2016-02-18 06:29:33
阅读次数:
213
一次一次地,乐此不疲的掉入自己挖的坑儿。之前博客《VS2015–win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突》写了如何处理algorithm中std:min和windows中min的冲突问题,我们用到了预处理器NOMINMAX。标准库在头中定义了两个模板函数std::min() 和 std::max()。
通常用它可以计算某个值对...
今天开始的部分是关于Qt提供的一些通用算法。这部分内容来自C++ GUI Programming with Qt 4, 2nd Edition。 <QtAlgorithms>提供了一系列通用的模板函数,用于实现容器上面的基本算法。这部分算法很多依赖于STL风格的遍历器(还记得前面曾经说过的Java风
分类:
编程语言 时间:
2016-02-01 22:19:08
阅读次数:
237
algorithm是C++标准程序库中的一个头文件,定义了C++ STL标准中的基础性的算法(均为函数模板)。在C++98中,共计有70个算法模板函数;在C++11中,增加了20个算法模板函数。其中有5个算法模板函数定义在头文件numeric中。下文所称的“序列”(sequence),是指可以用迭代...
分类:
编程语言 时间:
2016-01-18 19:00:16
阅读次数:
132
条款2: 理解auto自动类型推导如果你已经读过条款1关于模板类型推导的内容,那么你几乎已经知道了关于auto类型推导的全部。至于为什么auto类型推导就是模板类型推导只有一个地方感到好奇。那是什么呢?即模板类型推导包括了模板、函数和参数,而auto类型推断不用与这些打交道。这当然是真的,但是没关系。模板类型推导和auto自动类型推导是直接匹配的。从字面上看,就是从一个算法转换到另一个算法而已。在条...
分类:
编程语言 时间:
2016-01-10 22:49:21
阅读次数:
285
//类型萃取
#pragmaonce
#include<iostream>
usingnamespacestd;
struct__TrueType//定义类普通类型(基本类型的)
{
boolGet()
{
returntrue;
}
};
struct__FalseType//定义类非基本类型
{
boolGet()
{
returnfalse;
}
};
template<class_Tp>//模..
分类:
编程语言 时间:
2016-01-01 23:15:25
阅读次数:
449