一、智能指针
1.类类型对象,在其内部封装了一个普通指针。当智能指针对象
因离开作用域而被析构时,其析构函数被执行,通过其内部封装
的普通指针,销毁该指针的目标对象,避免内存泄露。
2.为了表现出和普通指针一致的外观和行为,重载了解引用运算
符(*)和间接成员访问运算符(->)函数,令其使用者可以将
一个智能指针当成普通指针一样地使用。
3.智能指针没有拷贝语义,只有转移语义,任何时候都只有一个
智能指针对象持有真正的对象地址。
4.智能指针不支持对象数组。
二、模板的非类型参数
1.无论是函数模板还是类模板,其模板参数表中除了可以包含类
型参数以外,还可以包含值形式的参数,后者一般被称为分类型
参数。
2.类模板的非类型参数和类型参数一样,可以带有缺省值。函数模板的非类型参数和类型参数一样,不可以带有缺省值。
3.传递给模板的非类型实参,可以是常量、常量表达式、带有常属性(const)的变量及其表达式,但是不能具有挥发性(volatile)。
4.模板的非类型参数只能是整数类型
(signed/unsigned char/short/int/long/long long),不能
是浮点类型(float/double/long double),也不能是类类型。
5.模板的非类型参数可以是字符指针,但是所传递的实参必须是
具有外部链接特性的字符数组。
三、带参数的流控制符
\033[A;B;Cm
A: 控制码
0 - 默认
1 - 高亮
4 - 下划线
5 - 闪烁
7 - 反白
8 - 不可见
B: 背景色
40 - 黑
41 - 红
42 - 绿
43 - 黄
44 - 蓝
45 - 粉
46 - 青
47 - 白
C: 前景色
30 - 黑
31 - 红
32 - 绿
33 - 黄
34 - 蓝
35 - 粉
36 - 青
37 - 白
四、模板技巧
1.通过typename关键字解决嵌套依赖问题。
class - 定义类
\ 声明模板的
/ 类型参数
typename - 解决嵌套依赖
2.通过.template/->template结构访问模板参数的模板成员。
3.在子模板中访问基模板的成员。
4.模板的嵌套定义。
5.模板的模板型模板参数。
6.模板的模板型基类。
7.不能定义模板型虚函数。
虚函数调用机制需要依赖虚函数表,该表是在类模板被实例化时
产生的,而此时成员函数模板尚未被实例化,其入口地址和重载
版本的个数要等到编译器处理完对该函数的所有调用以后才能确
定。成员函数模板的后期编译阻碍了虚函数表的静态构建。
五、模板的编译模型
1.推荐使用分离模型
把类的声明放在一个.h中,把类的定义放在一个或多个.cpp中。
1)便于管理
2)便于维护,节省编译时间
3)只需要把.h/.o/.a/.so提供给类的用户,.cpp无需提供
2.包含模型
1)便于管理
2)延长编译时间
3).cpp必须同时提供
3.显式实例化
1)便于管理
2)便于维护,节省编译时间
3)只需要把.h/.o/.a/.so提供给类的用户,.cpp无需提供
4)无法实例化所有用户需要的类型
4.导出模型
1)便于管理
2)便于维护,节省编译时间
3)只需要把.h/.o/.a/.so提供给类的用户,.cpp无需提供
4)实例化类型不受约束
5)绝大多数的编译器并不支持
Edison Design Group, Inc
C++2011标准中已将此特性废除,export关键字已被用于其它
特性。
六、静态多态

STL模板_智能指针概念的更多相关文章

  1. STL模板_multimap_智能指针作为键值

    map的键值的类型 -可以是自定的类型(对象.函数指针.智能指针....) -但是有副作用-当自己定义的类型键值无法用系统自己提供的 < 或者 > 进行排序的时候,会出现各种问题 -所以需 ...

  2. 智能指针类模板(上)——STL中的智能指针

    智能指针类模板智能指针本质上就是一个对象,它可以像原生指针那样来使用. 智能指针的意义-现代C++开发库中最重要的类模板之一-C++中自动内存管理的主要手段-能够在很大程度上避开内存相关的问题 1.内 ...

  3. 转载:STL四种智能指针

    转载至:https://blog.csdn.net/K346K346/article/details/81478223 STL一共给我们提供了四种智能指针: auto_ptr.unique_ptr.s ...

  4. 【STL学习】智能指针之shared_ptr

    前面已经学习过auto_ptr,这里补充另外一种智能指针,比auto_ptr要更强力更通用的shared_ptr. shared_ptr 简介及使用选择  几乎所有的程序都需要某种形式的引用计数智能指 ...

  5. C++_day06_运算符重载_智能指针

    1.只有函数运算符可以带缺省函数,其他运算符函数主要由操作符个数确定 2.解引用运算符和指针运算符 示例代码: #include <iostream> using namespace st ...

  6. STL模板_容器概念

    一.STL(Standard Template Library,标准模板库)概述1.容器:基于泛型的数据结构.2.算法:基于泛型的常用算法.3.迭代器:以泛型的方式访问容器中的元素,是泛型的算法可以应 ...

  7. STL模板_概念

    模板和STL一.模板的背景知识1.针对不同的类型定义不同函数版本.2.借助参数宏摆脱类型的限制,同时也因为失去的类型检查而引 入风险.3.借助于编译预处理器根据函数宏框架,扩展为针对不同类型的 具体函 ...

  8. STL模板_十大容器概念

    一.向量(续)1.大小和容量大小:容器中元素的个数.容量:容器中可容纳元素的个数.size_type size (void) const; // 获取大小void resize (size_type ...

  9. 【STL学习】智能指针之weak_ptr

    简介 weak_ptr是shared_ptr的观察者,它不会干扰shared_ptr所共享对象的所有权,当一个weak_ptr所观察的shared_ptr要释放它的资源时,它会把相关的weak_ptr ...

随机推荐

  1. PHPExcel Fatal error: ZipArchive library is not enabled

    导致上述问题的可能性有两种: 1.没开启php_zip.dll扩展 a.在Windows下的解决办法是: (a1)  在php.ini文件中,将extension=php_zip.dll前面的分号“; ...

  2. How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  3. Cocoa 之 Core Data(2)- 代码示例

    前面详 细讲解了 Core Data 的框架以及设计的类,下面我们来讲解一个完全手动编写代码 使用这些类的示例,这个例子来自 苹果官方示例.在这个例子里面,我们打算做这样一件事 情:记录程序运行记录( ...

  4. linux下创建可引导的U盘系统,使用dd命令进行Linux的ghost

    1,通过iso创建可引导的U盘系统. 1.0,格式化U盘为FAT32格式 linux下能够使用命令: mkfs.vfat U盘的设备路径 比如: mkfs.vfat /dev/sdb 当中U盘的路径能 ...

  5. Swift 设置navigation左右两侧按钮

    我们以设置右侧按钮为例,左侧方法类似 方法一,直接自定义文字 let item=UIBarButtonItem(title: "分享", style: UIBarButtonIte ...

  6. Mvc里查询商品页面

    /// <summary> /// 商品小类筛选页面 GoodsTypeName ----------------SelectGoods--商品筛选 --图文 /// Home/Selec ...

  7. 无法识别的属性“targetFramework”

    问题描述:无法识别的属性“targetFramework”.请注意属性名称区分大小写. 解决办法:修改.NET Framework 版本为相应版本即可,例如2.0换成4.0. 参考:http://bl ...

  8. datagrid指定行合并导出

    导出代码: public void GridViewToExcel(GridView ctrl, string FileType, string FileName) { HttpContext.Cur ...

  9. Openlayers 自定义控件

    OpenLayers.Control.YourControl = OpenLayers.Class(OpenLayers.Control, { // may private properties he ...

  10. js对表单设置了readonly和disabled后的区别

    Readonly和Disabled是用在表单中的两个属性,它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: 1)Readonly只针对input(text / pa ...