一、智能指针
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. andengine游戏引擎总结进阶篇2

    本篇包括瓦片地图,物理系统, 1瓦片地图 超级玛丽,冒险岛,魂斗罗等游戏主场景都有瓦片地图画成,它的作用可见一斑,它可以用tiled Qt软件画成,在辅助篇中讲讲解tiled Qt软件的使用 1)加载 ...

  2. asp.net RadioButton控件基础

    RadioButton按钮呢,必须要设置groupname属性的值才能将多个RadioButton按钮设置为单选按钮,当AutoPostBack="true"的时候,在change ...

  3. 查看MDB格式文件数据表

    当打开一个MDB格式的ACCESS文件后,如果里面默认的都是窗体视图,要查看数据表的信息,可以“创建-查询设计”查看表信息,或是在SQL视图中编写SQL语句来实现. 或按着Shift键打开文件.

  4. api(一) 创建窗口 (转)

    所有的Windows SDK编程都有一个类似的框架,本文就说说这个框架,Windows程序设计的框架分为“三部曲”: 一.注册窗口类 注册窗口类的API函数是RegisterClass或者Regist ...

  5. js 和 jsp关系

    http://stackoverflow.com/questions/11718063/use-javascript-or-jquery-inside-a-cif-statement 纠结了半天的问题

  6. cocostudio中button

    在编辑器中使用Button控件调用setBright(false)函数控件会不显示 开始以为是代码哪调用了setVisible(false)就在底层函数void Node::setVisible(bo ...

  7. EassyMock实践 捕获参数

    在测试接口过程中,有时我们希望知道自己期望传入的参数是什么,以此来判断传入参数的正确行,这时就需要用到EassyMock的capture方法.该方法能捕获传入的参数存放到自定义的变量中,然后用捕获的参 ...

  8. php7 install script

    ./configure --prefix=/home/admin/local/php7 --with-gd=/home/admin/local/libgd-2.1.1/ --with-jpeg-dir ...

  9. Android 如何让 app 自行处理 power key M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  10. jQuery插件autoComplete使用详解

    安装/需要引入的文件 <script type="text/javascript" src="../js/jquery-1.8.3.min.js.js"& ...