随笔分类 -  C++ Template

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