| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++入门篇(15)之模板知识进阶 -> 正文阅读 |
|
[C++知识库]C++入门篇(15)之模板知识进阶 |
前言前面的章节,我们大致结束了
模板的非类型参数在前面的章节中,我们使用到的模板参数一直是
如果我们定义一个对象— 如果我们需要定义一个size等于200的Array对象呢? 很明显,我们需要修改N; 如果我们需要定义一个size等于100,一个size等于200的Array对象 呢? 很明显,我们没办法实现;
那么我们的非类型参数,应该怎么写呢?
定义size等于100的Array对象: 定义size等于200的Array对象: 注意点:
模板的特化通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,比如
如果是基础类型,可以得到正确结果,但如果我们的T是char*呢? 比如有 所以,针对这种情况,引出了模板的特化
①模板的全特化: template后面只有<>,对于需要特化的类型,使用<>写在函数名后或者类名后
②模板的偏特化: 即只特化某一部分类型, 其中偏特化又分为两种 第一种: template后面有<>保留但不特化的类型,对于需要特化的类型,使用<>写在函数名后或者类名后
第二种: 告诉我们特化的是什么类型
模板的分离编译问题对于函数来说,它支持分离编译(即函数的声明写在 但是对于模板来说,并不支持这样,原因是为何呢?我们先看一下程序在运行之前(编译),会经历一些什么阶段 假设目前有三个文件,分别是
在前面的c语言章节,博主讲解过程序的预处理,我们知道,上面三个文件将会经理下面四个阶段:
前面三个阶段,我们可能很好理解,但是链接这里有点迷糊,举个例子:
而正是这一个步骤,刚好模板会报错,为什么呢? 我们在刚学模板的时候直到,模板只有调用才会生成对于的代码; 在 等到链接阶段,
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:36:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |