ANSI/ISO C++ Professional Programmer's Handbook(1)

3dMax脚本类插件:不写 C++也能造“原生”工具 从plugin关键字到场景持久化,拆解 MAXScript 插件开发全流程! 阅读详情
  摘自: http://sttony.blogspot.com/search/label/C%2B%2B

1

简介

by Danny Kalev

面向对象的程序设计可以回朔到60年代:类,继承和虚拟成员函数作为 Simula67的一个完整部分,一种主 要用来写事件驱动仿真的程序语言。当Smalltalk第一次在1972年再次出现时它提供了一种纯粹的面向对象 的程序设计环境。事实上,Smalltalk 定义了面向对象的程序设计。这种程序设计的风格在当时是如此的创 新和具有革命性使得它花了10年才使自己成为软件工业的标准。无庸置疑地,80年代初期C++的出现为这次 革命作了主要的贡献。

C++的起源

在1979年,Bell (现在的 AT&T)实验室 Labs的一位年轻工程师, Bjarne Stroustrup,开始了扩展C的 实验,为了使C成为实现大规模工程的更好的工具。在当时一个工程平均由数万行代码组成(LOC,lines of code )。


注意: 今天微软的Windows 2000 (以前的 NT 5.0) 由多于三千万行代码组成。


当工程超过100,000 行代码时,C的缺点变的十分明显让人无法接受。在其他事情中,有效的团队开发基于一种在自己的工作中引用他人成果以简化自己工作的能力——一种很难在C中完成的事情。

带类的C

通过在C中增加类,新的合成语言——“C with classes”——能提供更好的对封装和信息隐藏的支持。类提供了在其内部实现(更可能改变的部分)和他的外部接口之间的明显的分离。一个类对象有通过其构造器确定的确定的状态,并且它还将数据和处理数据的方法捆绑的一起。

进入C++

到了1983, 许多改变和扩展已经被加到带类的C中。在那个时期“C++”这个名字被提出了。于是从那时到 现在,++后缀变成类面向对象的同义词。(Bjarne Stroustrup 如果注册++这个商标,他将大赚一笔。) 也是在那个时期C++首次在AT&T Labs之外被应用。用户的数量每几个月增加一倍——也包括语言的编译 器和扩展工具。

80年代后期:开放导致的泛滥

到1985到1989, C++经历了主要的发展。保护成员,保护继承,模板和稍微有点争议的多继承加到语言中。很明显C++需要标准。

ANSI委员会标准的建立

1989年, American National Standards Institution (ANSI)委员会的C++的标准建立了。 委员会的官方名字是X3J16,之后变成了J16。一般的,标准化委员会不会从空开始起草标准;他们宁愿采纳一份事实上存在的参考,然后使用它作为基础。ANSI C 委员会使用The C Programming Language(Kernighan 和 Ritchie)作为起点。同样的ANSI C++ 委员会使用Annotated C++ Reference Manual(ARM作者Ellis 和 Stroustrup)作为起基础文档。ARM 提供了一个清晰详细的委员会工作的起点。委员会的政策不是要突击建立一份在一两年后就过时的草案。相反的,政策是允许来自使用C++的团体的需求来改变它。虽然如此,委员会也发起可扩展的关于语言的修正和改变,比如runtime type information (RTTI执行期类型信息)和新的运算符。

成熟

到那时为止,上十万人使用C++。C++编译器在每一个平台上实现。新的C++-基于frameworks,象MFC和OWL已出现了。委员会不得不面对来自几个方面的压力。一些组织提倡一些从别的面向对象语言借用来的新特性和扩展,同时另一些团体以可能的有效方式要求保持标准。另外,C++还必须保持和C的兼容性,包括对8种不同风格的支持:完整类型申明,讨厌的指针语法,结构,共用体,全局函数和许多其他的不是严格按面向对象程序设计步骤的特性。

国际性的标准

C++ 的标准是所有国家标准化团体共同努力的结果。这不同于C的标准化。C标准化最初被ANSI 作为一个美国标准公布,然后被国际标准化组织(ISO)添加了一些扩展(主要是国际化的问题)后作为一个国际标准采用。C++的国际化投入保证了这是一个在世界范围内广泛承认的标准,虽然在利益方面有一些复杂的关系(at the price of somewhat more complicated procedures)。因此,委员会的会议实际上是ANSI工作组和ISO工作组的联合会议。职务上,ANSI工作组作为ISO的顾问而工作。所以,在每一个技术问题上都有两种建议:ANSI的建议、用来指出ANSI的推荐,和后来的ISO的建议,来作出实际的 决定。一些重要的改变是为了符合ISO批准的标准,包括增加一种内建类型wchar_t, iostream库的模板化, string的模板化,和locale library的介绍。这些都是为了封装基于文化的差别。

委员会的草案和公众的评论

委员会最初的工作是产生一份草案,作为Committee Draft (CD)发表。为了这个目的,委员会一年中在世界的不同地方召开三次为期一个周的会议。 就象来自ISO的注释,第一份CD收到了许多不赞成的意见。委员会 决定了这些技术上的问题并且在第二版中标上为这些地方标上注释。第二份CD被ISO批准了;然而仍然有5个 反对意见,并伴随着注释。经过ISO的投票,CD向公众公布。公众评论的过程开始了来自全世界的C++程序员对待审定的CD的评论以及对其矛盾和冗长之处的指出。

标准的锁定和最终化(Feature Freeze and Finalization)

在1996年11月批准第二版CD之后,委员会的主要任务是答复那5个反对票以及伴随其的注解,然后将其变为赞同票。最后的文件是Final Draft International Standard(FDIS,国际标准最终草案)。1997年11月在 Morristown, New Jersey 举行的会议上FDIS被标准化委员会一致通过。1998年经过一些微小的变化之后,ISO批准了FDIS,使其成为一个国际化的标准。按ISO的惯例在标准发布后,5年内将不会被修改,除了对错误 的修改。若发现错误后,你可以向委员会提交一份关于你的发现的Defect Report。

不同于其他面向对象语言的C++

C++ 在许多方面和其他面向对象语言不同。例如,C++不是一种root-based语言,它也不是在虚拟机上运行的。这些不同显著的扩大了C++的应用范围。

对以前系统的向后兼容性

以前的C代码能被容易转化为新的C++代码,这是C++的主要优点。从C到C++的移植不会迫使你丢弃任何优秀 的C代码。许多商业化的frameworks,甚至C++自己的标准库中的一些组件是由包装在面向接口的传统的C组成 的。

性能

解释语言允许简单的代码输入,但可是代价是重要的性能开销。另一方面 C++使用它从 C继承来得编译和链 接模型。C++设计者的一个目标就是尽可能的保持它的高效;编译-连接模型可以代码的生成和优化非常有效 。另外一个影响性能的因素是使用垃圾收集器。这个特性是唾手可得而且垃圾收集器可以阻止一些常见的语 法错误;然而,有垃圾收集器的语言在那些限制十分严格的时间限制(time-critical) 程序开发环境中是 无法使用的。由于这个原因,C++没有一个垃圾收集器。

面向对象化和其他有用的范例(Paradigms)

出面向对象的程序设计之外, C++支持其他有用的程序设计风格,包括过程化的程序设计,基于对象的程序 设计,泛型程序设计——使C++成了一种多范例(multi-paradigm),多用途(general-purpose)的程序设计语言。

过程化的程序设计

过程化的程序设计今天并不很流行。然而,有很充分的理由使C++在今天仍支持这种风格。

从C程序员过度到C++程序员

C程序员到C++的第一部不是要被迫抛弃他的所有的专长。许多原始和基础的C++概念是从C继承来的,包括内建运算符和基本类型,指针动态内存分配的概念,头文件,预处理等等。在短时期内,向C++转型的C程序员可以继续工作。

两种语言混合的环境

C++和 C 代码可以一起工作。在确定的条件下,这种混合是协调和有效的。

自动产生代码

许多软件工具和代码生成器可以产生作为应用程序中间舞台的C代码。例如,大部分关系数据库的SQL查询 被翻译成C代码,然后在被编译、连接。当生成的代码不是被程序员使用时,强迫这些生成器产生 C++代码 (虽然一些已经那么做了)不需要该很多地方。此外,许多早期的C++编译器并不是真真意义上的C++编译器;他们更象是翻译器,因为他们将C++代码翻译成C代码,然后在编译、连接。事实上,任何有效的C++程序可以直 接翻译成纯粹的C代码。

面向对象的程序设计

这是被广泛使用的C++编程风格。这本书的目的就是为生成有效、可靠的、可重用的、易维护的面向对象的 代码给予程序员有用的指导和规则。但是没有通用的OO的真谛;OO的定义在学校、语言、用户之间变化。然而 ,有一个关于这一通用概念的共识——一个封装、信息隐藏、多态、动态绑定和继承的联合体。高级 面向对象技术主要由泛型程序设计和多继承组成。一些概念将在后续章节中深入讨论。

泛型程序设计

泛型程序设计在可重用能力方面开始了超越面向对象的程序设计的第一步。C++的两个重要特性,模板和运 算符重载是泛型程序设计的基础。STL,泛型算法和容器的集合,可能是“泛型”给人印象最深的形式。

本书的目标

本书瞄准那些为了提高他们设计和编程熟练度的有丰富经验的C++开发者。它揭露事实和技术,并且为高级 的、适应标准的、有效率的使用 C++提供一个知识库。另外,本书也解释在语言高层特性之下的机制,并且解 释C++设计和演化之下的体系。

读者对象

读者对象是想通过获得新的设计技术和设计模式以增加他们的熟练程度的中级、高级C++开发者。在增加许 多新的特性到这种语言的基础上,标准化委员会声明不赞成一些特性和库组件。在这本书中,想开发长久的 ,适用于未来的C++软件的读者可以发现一个广泛的不赞成的特性和推荐作为替换选项的列表。

本书的结构

第二章, “标准简报:ANSI/ISO C++最新的附件,”提供一些 在C++标准中使用的关键术语,和那 些是在本书中广泛地使用的。在这之后,将讲述最近的C++的改变和扩展。最后,第二章将给出在标准中列出 的反对的特性的总揽,并且给出符合标准的他们的替换。

第三章, "运算符重载," 探索了好处以及运算符重载可能带来的问题。它讨论了应用与运算符重载 的限制,以及解释了如何转化运算符。

第四章,“特殊的成员函数:默认构造器,拷贝构造器,销毁器,赋值运算符,”解释了特殊成员函 数的语法和他们在类设计中的角色。它也示范了一些有效使用特殊成员函数的技术和指导方针。

第五章, "面向对象的编程和设计,"提供一个通过 C++支持的多样的程序设计风格的纵览,重点 是面向对象设计和程序设计的原理。

第六章, "异常处理," 先讲述了传统的错误处理的方法和其缺点,然后引出了标准的错误处理。提 供了一个历史上的异常处理设计的摘要,然后讨论异常的关联处理的性能问题。

第七章, "运行时类型识别,"讨论了RTTI(运行时类型识别)的三个组件:typeid,dynamic_cast和类的type_info。另外,解释了什么时候必须使用RTTI。 最后,讨论了RTTI的性能开销。

第八章, "命名空间,"阐明语言的命名空间增加部分后面的基本原理和命名空间解决的问题。然后示 范了实际中命名空间如何使用,以及命名空间和其他特性的相互影响。

第九章, "模板," 讨论了设计的多样化和实现模板,包括类模板,函数模板和需要专门关注的模板 问题(比如指向成员的指针,模板类的虚拟成员函数,和显式的实例化)。

第十章, "STL和泛型程序设计," 是标准模板库(Standard Template Library STL)和一般泛型程 序设计的介绍。它讨论了泛型程序设计的法则,重点是作为泛型程序设计的规范framework的STL。这一章也介 绍STL组件的使用:容器、算法(algorithms)、迭代子(algorithms)、分配运算符、适配器(adapters) 、绑定者(binders)、和函数对象。对使用最广泛的STL组件,std::vector和 std::string,作深入的探索。

第十一章, "内存管理," 解释了C++的对象模型。讨论了三种数据存储类型:静态、自动、自由存储。这一章也深入探讨了了运算符new 和 delete的语法,和他们的底层实现。另外,示范了高级内存管理技术的用法,和指导你避免一般的与内存有关的错误。

第十二章, "优化你的代码," 专注与代码的优化。这章提供了写出更有效代码的有用的指导的技巧,并且它向为了使空间级小和加速运行时速度的更有作为的最优化技术取的效果。

第十三章, "与C语言的兼容性问题,"示范了如何移植C代码到C++代码,特别是过程化程序设计到面向 对象程序设计。它列出了C++的C字集和ISO C的区别。最后,深入探讨了C++对象在内存中的底层表示和对象和 C 结构的兼容性。

第十四章, "总结和未来的方向," 结束了本书。本章讲述了贯穿与过去二十年C++设计和发展中的法则和指导方针,并且将C++与少数的成功的其他程序设计语言的发展。然后,列举了进入标准所有特性。之后,讨论了未来可能的扩展,包括自动化垃圾收集,持久对象和并发性。其他假定的并讨论的未来的扩展有:动态连接库、基于规则的程序设计(rule-based programming)和可扩展的成员函数。

瑞芯微RK3506开发板Ethercat主站性能优化实战:从内核配置到微秒级延迟控制 本文详细介绍了在瑞芯微RK3506开发板上实现EtherCAT主站微秒级延迟控制的实战优化方案。核心在于部署Preempt-RT实时内核,并进行深度系统调优,包括CPU隔离、中断亲和性设置、内存锁定及电源管理调整。通过绕过Linux网络栈的专用驱动加载与配置,最终实现了稳定的高性能实时控制,满足工业自动化需求。 阅读详情

相关推荐

Greenplum基础

CREATE DATABASE 是 SQL 命令,用于创建一个新的数据库。name 是你要创建的数据库的名称。这个名称是必须的,并且在同一个数据库服务器上必须是唯一的。可选项,OWNER 指定了新数据库的所有者,如果未指定,新数据库的所有者默认是执行该命令的用户。dbowner 是数据库所有者的用户名。可选项,TEMPLATE 指定了用于创建新数据库的模板。在 PostgreSQL 和 GreenPlum 中,通常有一个名为 template1 的默认模板。如果不指定,就会使用这个默认模板。

m0_57697768的博客 1206

ANSI/ISO C++ Professional Programmer's Handbook 3

ANSI/ISO C++ Professional Programmers Handbook 3 运算符重载by Danny Kalev 简介 运算符重载的唯一规则 成员和非成员 运算符的接口 运算符的一致性

sttony的专栏 845

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3030

ANSI/ISO C++ Professional Programmer's Handbook 4

ANSI/ISO C++ Professional Programmers Handbook 4 特殊成员函数:默认构造器,拷贝构造器,销毁器和赋值运算符by Danny Kale 简介 构造器 从类的构造器调用对象的成员函数 不需要的构造器(Trivial

sttony的专栏 601

SAP数据导入避坑指南:财务期初上线实操全流程(含常见错误排查)

本文详细解析了SAP财务期初数据导入的全流程,包括数据准备、主数据标准化、余额与未清项导入等关键步骤,并提供了常见错误排查和解决方案。特别强调了过渡科目和存货价值的处理技巧,帮助企业在SAP系统上线时避免数据导入陷阱,确保财务数据的准确性和系统平稳运行。

weixin_30832143的博客 396

Jlink除了调试还能干啥?用JFlash SPI给W25Q64烧录固件的5个实用技巧

本文深入探讨了Jlink的隐藏功能,特别是通过JFlash SPI高效烧录W25Q64的5个进阶技巧。从硬件连接优化到批量处理脚本,再到数据安全验证,这些技巧能显著提升烧录速度和稳定性,适用于量产环境。文章还提供了详细的参数配置和脚本示例,帮助工程师充分发挥Jlink的潜力。

weixin_29164843的博客 407

ANSI/ISO C++ Professional Programmer's Handbook(12)

  摘自:http://sttony.blogspot.com/search/label/C%2B%2B12优化你的代码by Danny Kalev 简介 本章的范围 在优化你的软件之前 申明的布局 初始化比赋值好 重新放置申明 成员初始化列表 前缀运算符VS后缀运算符 内联函数 函数调用的开销 内联函数的好处 被申明为内

SearchLife的专栏 1209

DCM、PLL以及DLL等概念及详情

介绍DLL、PLL以及DCM的概念,总结其模块构成、工作原理、相互之间的差异与各自优势。

CLL_caicai的博客 8337

ANSI/ISO C++ Professional Programmer's Handbook 13

ANSI/ISO C++ Professional Programmers Handbook 13与C语言的兼容性问题by Danny Kalev 简介 ISO C 和ANSI/ISO C++的C子集之间的区别 函数形参列表 函数申明 空的形参列

sttony的专栏 1259

基于SSD2828和STM32的MIPI显示屏驱动系统设计与实现

在硬件层面,需要将STM32、SSD2828和MIPI显示屏连接起来。STM32与SSD2828的连接:通过SPI接口连接STM32和SSD2828,用于配置和控制SSD2828。SSD2828与MIPI显示屏的连接:通过MIPI DSI接口连接SSD2828和MIPI显示屏,用于传输显示数据。

qq_38334677的博客 7143

华为校招&实习&留学生机试真题目录+算法分类+在线OJ+通过率+视频讲解

全网最新最全华为校招&实习&留学生机试真题题库

m0_73659489的博客 6863

ANSI/ISO C++ Professional Programmer's Handbook 10

ANSI/ISO C++ Professional Programmers Handbook 10STL和泛型程序设计by Danny Kalev 简介 泛型程序设计 STL头文件的组织 容器 算法 迭代器

sttony的专栏 1218

9、工业数据管理:Historian、ERP、MES与资产模型解析

本文深入解析了工业数据管理中的核心概念与技术,包括Historian数据库、ERP和MES系统以及资产模型。文章详细介绍了Historian数据库的特性、架构分类、数据采集方式及时间序列处理能力,同时探讨了ERP和MES系统的功能与优势,特别是MES在生产执行中的重要作用。资产模型部分结合ISA-95和ISA-88标准,阐述了工业资产的层次化建模方法。此外,文章还分析了各系统之间的协同关系、面临的挑战及应对策略,并展望了未来工业数据管理的发展趋势,如云原生技术、人工智能融合和工业物联网的应用。

pz89012345的博客 143

ANSI/ISO C++ Professional Programmer's Handbook(13)

 摘自:http://sttony.blogspot.com/search/label/C%2B%2B 13与C语言的兼容性问题by Danny Kalev简介ISO C 和ANSI/ISO C++的C子集之间的区别函数形参列表函数申明空的形参列表隐含的int 申明现在ISO C 做了修订,禁止了隐含int 申明和重复申明全局变量隐含的转换v

SearchLife的专栏 1072

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ANSI/ISO C++ Professional Programmer's Handbook 12

ANSI/ISO C++ Professional Programmers Handbook 12优化你的代码by Danny Kalev 简介 本章的范围 在优化你的软件之前 申明的布局 初始化比赋值好

sttony的专栏 964

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ANSI/ISO C++ Professional Programmer's Handbook(3)

  摘自:http://sttony.blogspot.com/search/label/C%2B%2B3运算符重载by Danny Kalev简介 运算符重载的唯一规则 成员和非成员 运算符的接口 运算符的一致性 运算符重载的限制 重载运算符只能用于用户自定义类型 创造新的运算符是不允许的 优先级和参数个数 默认参数 不能被重载

SearchLife的专栏 924

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ANSI/ISO C++ Professional Programmer's Handbook(10)

 摘自:http://sttony.blogspot.com/search/label/C%2B%2B10STL和泛型程序设计by Danny Kalev简介泛型程序设计STL头文件的组织容器算法迭代器数字库工具容器顺序容器STL容器包含元素的要求容器类vector容器重分配capacity()和size()通过构

SearchLife的专栏 1080

ANSI/ISO C++ Professional Programmer's Handbook(4)

  摘自:http://sttony.blogspot.com/search/label/C%2B%2B4特殊成员函数:默认构造器,拷贝构造器,销毁器和赋值运算符by Danny Kale简介构造器从类的构造器调用对象的成员函数不需要的构造器(Trivial Constructors)避免在构造器中重复一样的代码默认构造器是必需的吗?对STL容器的适

SearchLife的专栏 857

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 191

选型笔记:Type‑C 扩展坞方案评估|DP1.4 转 HDMI2.0 桥接芯片 GSV2201S@ACP

本文记录 GSV2201S 这款 DP1.4a 转 HDMI2.0 桥接芯片评估,梳理视频、HDCP、PD 集成能力,总结 Type‑C 转接 Dongle、扩展坞方案的适配边界,以及差分走线、PD 时序、HDCP 握手等高频调试问题,为 C 口视频转接方案选型提供参考。

ACP广源盛的博客 217

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 386

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 332

蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析

蓝桥杯报名正在火热进行(软件赛报名 2026-10-08—12-18,省赛 2027-04-10),电子学会 12 月软件编程(C/C++ 一级至十级、Python 一级至六级)考级报名也已开启(9/23—12/2),全国青少年信息素养大赛算法应用主题赛同步推进——把 LCA 这个模板练熟,正是冲刺这些赛事树型考点的关键一步。所谓「最近公共祖先」:在一棵以某个节点为根的树里,两个节点 u、v 向上追溯,最早交汇的那个祖先就叫它们的 LCA。比如家谱里,你和你表哥最近的共同长辈就是你们的祖父。

IT_Scratch的博客 532

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 376

【C语言】字符与字符串函数

C语言中字符串为以\0结尾的字符数组,标准库函数基于此约定。本文解析字符串内存布局,详解ctype.h与string.h中字符分类、长度计算、拷贝、比较等函数的使用要点,强调长度判断与越界风险,最后通过命令行待办事项示例整合fgets、sscanf、strncpy、strcmp,展示实际应用中的关键细节。

记录在学习过程中学到的知识 341

C++ 函数模版

模板参数:● template ,T 就是类型占位符,名字可以自定义,习惯用T● 占位符可以在函数返回值、形参、函数内部当作类型使用使用要点模板代码一般写在头文件:编译器需要看到完整模板源码,才能在每个编译单元完成实例化全局函数、类内成员函数都可以写成模板实例化发生在编译阶段,不是运行时隐式实例化:调用时编译器自动推导实参类型,生成对应版本函数。

2501_94041724的博客 300
上一篇: ANSI/ISO C++ Professional Programmer's Handbook(2)
下一篇: 深入探讨C++中的引用
SearchLife
博客等级 码龄20年 51粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值