- 博客(10)
- 资源 (24)
- 收藏
- 关注
原创 C++11新特性(67)- 标准库forward函数
本文讨论的问题比较复杂,这里由浅入深,一步一步说明。传值函数模板假设有一组函数,根据两个输入值进行工作,例如下面的add函数:我们希望编写一个函数模板来调用这些函数。这个函数模板的使用方法如下:程序员可以根据需要,修改函数名参数和两个变量的类型。到目前为止算是准备活动。 左值引用参数函数模板除了像add函数那样,两个参数都作为输入的函数以外,也许还希望调...
2018-08-29 21:06:27 3191 1
原创 C++11新特性(66)- 用static_cast将左值转换为右值
温故而知新本文涉及两个概念,static_cast和右值引用,在阅读本文之前,最好先阅读下面的文章。C++显式转换(1)-static_castC++11新特性(23)- 右值引用C++11新特性(24)-右值引用(续)使用std::move考察下面两个函数:除了参数类型一个是左值引用,一个是右值引用以外都一样。结合前面的文章可以得出下面的结论:左值引用表明这个值可...
2018-08-28 18:55:21 3214 1
原创 C++11新特性(65)- 引用合并
本文说明的内容是当参数为右值引用时的模板函数的参数推断,我们从基本的情况说起。实参推断考虑下面的模板函数和调用代码。对于前两种情况,编译器可以根据输入的类型很简单的判断参数类型分别为整数和浮点数;对于第三种情况,编译器无法找到const char*乘2的合理解释,所以结果就是编译错误。左值引用参数的类型推断如果参数类型是左值引用的话,事情就会变得复杂一些。例如下面的代码...
2018-08-27 20:18:06 814
原创 C++11新特性(64)- 模板函数与返回类型后置
渐进式说明最简单的情况先考虑我们有一个函数,功能是从一个整数数组中取得其中一个元素。代码很简单,但这只是一个引子。本文的所有示例代码都不考虑下标越界的情况,这样可以更加突出主题。 适用于其他类型如果希望这个函数可以适应更多类型的数组,只要引入模板即可。也没难多少。 更加通用如果除了数据类型可以扩展之外,还希望可以将其应用于vector的话,就没有那么...
2018-08-22 20:05:12 2597
原创 C++11新特性(63)- 显式控制模板的实例化
看过C++Primer中的表述之后,进行了各种实验,但总是不能自圆其说,于是进行了一番调查,本文采用的是另一种说法。实例说明为了更好的理解问题,先看实例。首先是主角。模板类模板的内容分别保存在.h文件和.cpp文件中。 FirstTester模板的第一个利用者,这里只表示.cpp的内容。本类中两次实例化了TemplateClass模板,分别生成tf和tf...
2018-08-21 20:04:03 1489 5
原创 C++11新特性(62)- 模板函数的默认模板参数
经典的例子这是一个相对简单的特性,首先借用C++ Primer中的示例代码。除了高亮的部分以外,就是一个普通的模板比较函数。而高亮的部分就是本文的主题:模板函数的模板参数。这种写法的含义就是如果程序员没有指定第二个模板参 数,编译器就默认使用less<T>;如果程序员另外指定了模板参数,例如greater<T>,那么就使用指定的那个模板参 数。 观察以下...
2018-08-20 20:22:23 6244 1
原创 C++11新特性(61)- 模板类型别名
为模板实例指定别名 类模板实例化之后,实际上是定义了一个新的类型。在实际的开发中,经常会多次使用这个新类型。例如下面的代码:同样的类型多次使用之后可能就会希望可以再简单一些,这时的一般做法就是利用typedef来引用实例化了的模板类。接下来就可以在代码中使用了这个所谓的新类型了:模板类型别名 也可能存在这样的情况:希望指定别名的不是一个实例化的模板类,而是一...
2018-08-17 20:34:42 1691 2
原创 C++11新特性(60)- 声明模板类型形参为友元
在《C++ Primer(第五版)》中关于这个话题的表述如下: 在新标准中,我们可以将模板类型参数声明为友元:此处我们将用来实例化Bar的类型声明为友元。因此对于某个类型名Foo,Foo将成为Bar<Boo>的友元。。。。 光看上面的说明,估计好多人还是一头雾水,下面通过一个接近实际开发的例子来进一步说明。 应用举例 需求我们希望设计一个...
2018-08-16 20:36:18 1002
原创 C++11新特性(59)- 继承的构造函数
问题的背景假设我们有下面的CRect类:由于今天的内容是讲构造函数的,所以省略CRect类的其他功能。在这个类中存在4个构造函数,可以像下面这样使用它们:继承的小麻烦由于某种原因,我们需要继承这个类得到一个新类,比如说CFillRect,但同时还想以CRect同样的方式构造实例,也就是说希望可以像下面这样使用新类:C++11之前,我们只能在CFillRect中再次定...
2018-08-15 19:43:35 375
原创 C++11新特性(58)- 删除的拷贝控制和继承
本标题来自C++ Primer 5,作者也没有看懂。 作为C++11的新特性,允许程序员将某些函数定义为删除的以限制这些功能被使用。 引入了继承概念以后,事情变得稍微复杂一些。 代码示例 例如下面的基类: 这 个类只有一个数据成员,定义了默认构造函数,拷贝构造函数,移动构造函数,赋值运算符,移动运算符和析构函数。这些函数有一个共同特点:都是负责构造,...
2018-08-01 18:00:16 1278
Aduino UNO D1 R32 硬件包
2020-03-15
[Android应用开发记录-字幕播放器(5)完善]附属工程,源码
2011-09-07
Android应用开发记录-字幕播放器(5)完善附带工程,源码
2011-09-07
LyricPlayer for Android 2.1
2011-09-03
Android应用开发记录-字幕播放器(4)完成
2011-08-28
Android下的原创小游戏-九宫格
2011-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人