随笔分类 - C++ Template
摘要:本篇是本系列博文最后一篇,主要讲解函数对象和回调的相关内容。函数对象(也称为仿函数)是指:可以使用函数调用语法进行调用的任何对象。在C程序设计语言中,有3种类似于函数调用语法的实体:函数、类似于函数的宏和函数指针。由于函数和宏实际上并不是对象,因此在C语言中,我们只把函数指针看成仿函数。然而在C++
阅读全文
摘要:本系列博文中我们使用同类容器(如数组类型)来阐述模板的强大威力,同时,C/C++还具有包含异类对象的能力。这里的异类指的是类型不同,或者结构不同。tuple就是这样的一个类模板,它能够用于聚集不同类型的对象,本篇博文旨在介绍可以聚集任意个数的成员对象。------------------------
阅读全文
摘要:在管理动态分配的内存时,一个最棘手的问题就是决定何时释放这些内存,而智能指针就是用来简化内存管理的编程方式。智能指针一般有独占和共享两种所有权模型。----------------------------------------------------------------------------
阅读全文
摘要:前面的博文介绍了模板的基础,深入模板特性,模板和设计的一些内容。从这篇开始,我们介绍一些高级模板设计,开发某些相对较小、并且互相独立的功能,而且对于这些简单功能而言,模板是最好的实现方法:(1)一个用于类型区分的框架;(2)智能指针(3)tuple(4)仿函数--------------------
阅读全文
摘要:表达式模板解决的问题是:对于一个数值数组类,它需要为基于整个数组对象的数值操作提供支持,如对数组求和或放大: Array<double> x(1000), y(1000); ... x = 1.2 * x + x * y; 对效率要求苛刻的数值计算器,会要求上面的表达式以最高效的方式进行求值。想既高
阅读全文
摘要:metaprogramming含有“对一个程序进行编程”的意思。换句话说,编程系统将会执行我们所写的代码,来生成新的代码,而这些新代码才真正实现了我们所期望的功能。通常而言,metaprogramming这个概念意味着一种反射的特性:metaprogramminig组件只是程序的一部分,而且它也只生
阅读全文
摘要:16.1 命名模板参数许多模板技术往往让类模板拖着一长串类型参数;不过许多参数都设有合理的缺省值,如: template <typename policy1 = DefaultPolicy1, typename policy2 = DefaultPolicy2, typename policy3 =
阅读全文
摘要:第15章 trait与policy类------------------------------------------------------------------------------------------------------------模板让我们可以针对多种类型对类和函数进行参数,但
阅读全文
摘要:前面的几篇博文介绍了模板的基础知识,并且也深入的讲解了模板的特性。接下来的博文中,将会针对模板与设计进行相关的介绍。--------------------------------------------------------------------------------------------...
阅读全文
摘要:本篇讲解模板特化------------------------------------------------------------------------------------------------------------第12章 特化和重载------------------------...
阅读全文
摘要:本篇讲解实例化和模板实参演绎------------------------------------------------------------------------------------------------------------第10章 实例化--------------------...
阅读全文
摘要:第9章 模板中的名称------------------------------------------------------------------------------------------------------------C++(与C一样)是一种上下文相关语言:对于C++的一个构造,我...
阅读全文
摘要:上一篇C++ template —— 模板基础(一)讲解了有关C++模板的大多数概念,日常C++程序设计中所遇到的很多问题,都可以从这部分教程得到解答。本篇中我们深入语言特性。 第8章 深入模板基础8.1 参数化声明函数模板和类模板: // 类模板 template <typename T> cla
阅读全文
摘要:1.不能为虚函数的原因:编译器在编译一个类的时候,需要确定这个类的虚函数表的大小。一般来说,如果一个类有N个虚函数,它的虚函数表的大小就是N,如果按字节算的话那么就是4*N。如果允许一个成员模板函数为虚函数的话,因为我们可以为该成员模板函数实例化出很多不同的版本,也就是可以实例化出很多不同版本的虚函...
阅读全文
摘要:问题起源【转自】http://www.cnblogs.com/catch/p/3751353.html先看下面很简单的一小段程序。#include template struct Base { void fun() { std::cout struct Derived : Ba...
阅读全文
摘要:《C++ Template》对Template各个方面进行了较为深度详细的解析,故而本系列博客按书本的各章顺序编排,并只作为简单的读书笔记,详细讲解请购买原版书籍(绝对物超所值)。 第一章 前言1.4 编程风格(1)对“常整数”趋向使用“int const”,而不是使用“const int”。“恒定
阅读全文
摘要:Partial Template Specialization能够让你在模板(Template)的所有可能的实体中特化出一组子集. 1.模板(全)特化(template specialization): 例如,定义如下的一个模板: 然后你可以像下面那样明确地加以特化: 其中ModalDialog和M
阅读全文
摘要:一、模板具体化: 函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或double)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的函数。由于模板允许以泛型(而不是具体类型)的方式编写程序,因此有时也被称为通用编程。由于类型是用参数表示的,因此模
阅读全文

浙公网安备 33010602011771号