一、智能指针
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. OC运行时和方法机制笔记

    在OC当中,属性是对字段的一种特殊封装手段. 在编译期,编译器会将对字段的访问替换为内存偏移量,实质是一种硬编码. 如果增加一个字段,那么对象的内存排布就会改变,需要重新编译才行. OC的做法是,把实 ...

  2. Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)

    我们依据上一次介绍的触屏事件和事件队列等知识来实现触屏的单击,双击,三连击事件. 下图为我们实现的效果图: 单击精灵跳跃一个高度, 双击精灵跳跃的高度比单击的高 三连击精灵跳跃的跟高 好了,開始动手吧 ...

  3. Sublime Text 增加CoffeeScript、Jade and Stylus syntax高亮

    切换到Sublime Text Packages 目录: Liunx系统: cd ~/Library/Application\ Support/Sublime\ Text\ /Packages win ...

  4. R 语言学习笔记

    data()  调用内置数据集 help(women) 查看数据集women的帮助文档 当忘记函数名称时可以按关键字搜索:help.search(),简写为??“” str(var) 查看R对象内部结 ...

  5. 后缀数组的一些性质----height数组

    height数组:定义 height[i] = suffix[i-1] 和 suffix[i] 的最长公共前缀,也就是排名相邻的两个后缀的最长公共前缀.那么对于 j 和 k 不妨设 Rank[j] & ...

  6. 常用的ASCII码对照表

  7. 项目中怎么去掉tomcat的猫

    其实很简单,需要在登录页和显示内容的主页,将自己的favicon.ico 导入,并在登录页和主页将其引入即可. 例如: 接着在登录页引入  <link rel="shortcut ic ...

  8. Android JSON数据的读取和创建

    预先准备好的一段JSON数据 { "languages":[ {"id":1,"ide":"Eclipse"," ...

  9. windows中copy命令详解

    功能:将一份文件或者多份文件复制到另一个位置 用法: copy [/D] [/V] [/N] [/Y|/-Y] [/Z] [/A | /B] source [/A | /B] [+ source [/ ...

  10. Internet设置->连接选项卡->局域网(LAN)设置 某些设置由系统管理员进行管理

    今天突然发现ss不能使用了.经过一系列排查发现 Internet设置->连接选项卡->局域网(LAN)设置 某些设置由系统管理员进行管理,如上图. 修改注册表值HKEY_LOCAL_MAC ...