C++核心准则T.83:不要将成员函数定义为模板虚函数
时间:2022-07-26
本文章向大家介绍C++核心准则T.83:不要将成员函数定义为模板虚函数,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
T.83: Do not declare a member function template virtual
T.83:不要将成员函数定义为模板类型虚函数
Reason(原因)
C++ does not support that. If it did, vtbls could not be generated until link time. And in general, implementations must deal with dynamic linking.
C++不支持这么做。如果支持的话,只有到链接时才能生成虚函数表。一般情况下,C++语言的实现必须处理动态链接。
Example, don't(反面示例)
class Shape {
// ...
template<class T>
virtual bool intersect(T* p); // error: template cannot be virtual
};
Note(注意)
We need a rule because people keep asking about this
因为人们不断地问这个问题,因此我们需要这样一条规则。
Alternative(其他选项)
Double dispatch, visitors, calculate which function to call
双分发,访问者,通过调用函数进行计算。
Enforcement(实施建议)
The compiler handles that.
通过编译器处理这个问题。
原文链接
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#t83-do-not-declare-a-member-function-template-virtual
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- typescript基础篇(3):接口
- 2020 年,苹果的 AI 还有创新吗?
- 毕设有着落了!一套开源的,基于SpringBoot的车牌识别系统
- 详解hive的join优化
- 区块链时代的世界宪章:代码即法律
- SQL 计算公司的期初资产
- nested exception is java.lang.IllegalStateException: refreshAfterWrite requires
- 除了会排序,你对ORDER BY的用法可能一无所知!
- 修改xposed特征并刷机
- Python 爬虫进阶必备 | 关于某租房网站数据加密的分析
- CMAKE学习记录(二)
- maven 中的版本依赖冲突问题
- Manual for Ubuntu Installation
- 修改自定义站点监控页面的样式
- 快速建站“新玩具”—glitch.me