合集-C++泛型编程

摘要:使用特征 特征是一种机制,用于提供模板所需的必要信息,比如模板中变量的类型,初始值等等。简单的理解,特征是有关模板参数的额外属性,具体指的可以是与该模板相关的其他模板类中的字段或是常量等。在编译阶段就可以从这个额外属性中获取到一些模板实例中会用到的信息。 template<typename T> s 阅读全文
posted @ 2025-02-16 21:29 cwtxx 阅读(2) 评论(0) 推荐(0) 编辑
摘要:参数化的声明 C++支持四种基本模板:类模板、函数模板、变量模板和别名模板,每一种都可以出现在命名空间的作用域中和类作用域中。 template<typename T> // 类模板的命名空间 class Data { public: static constexpr bool copyable = 阅读全文
posted @ 2025-02-16 21:50 cwtxx 阅读(7) 评论(0) 推荐(0) 编辑
摘要:奇妙递归模板模式 奇妙递归模板模式(curiously recurring template pattern)指的是将派生类作为模板实参传递给自己的某个基类。 template<typename Derived> class CuriousBase { }; class Curious : publ 阅读全文
posted @ 2025-02-16 21:57 cwtxx 阅读(6) 评论(0) 推荐(0) 编辑
摘要:名称的分类 分类 说明 标识符(identifier) 由字母、数字和下划线组成,不能以数字开头 运算符函数id 关键字operator后跟运算符的符号,比如operator new和operator[] 转换函数id 表示用户定义的隐式转换运算符,比如operator int& 字面量运算符id 阅读全文
posted @ 2025-02-16 22:00 cwtxx 阅读(6) 评论(0) 推荐(0) 编辑
摘要:函数模板 写一个最简单的模板函数: template<typename T1, typename T2> T1 max(T1 a, T2 b) { return a < b ? b : a; } 比较两个数的大小,然后返回最大值。存在一个问题,返回的类型将会和第一个入参的类型一致。 cout << 阅读全文
posted @ 2025-02-16 22:01 cwtxx 阅读(3) 评论(0) 推荐(0) 编辑
摘要:多态字面理解就是有多种形式和形态,编程中专门指一种可以将不同的行为关联到一个泛型符号的能力。 多态是面向对象编程的基石之一,C++主要通过类的继承和虚函数来实现多态。 多态又可以分为动多态和静多态,主要的区别是多态的表现形式是在运行期处理,还是在编译期处理。 动多态 动多态是在运行期处理多态行为,常 阅读全文
posted @ 2025-02-16 22:07 cwtxx 阅读(3) 评论(0) 推荐(0) 编辑
摘要:完美转发 我们知道,对于对象的传递可以是普通的引用X&,常量引用const X&,或者是右值引用X&&。 如果不使用模板编程想要将参数转发给其他函数,并区分这三者,就需要重载三个函数来实现。 void g(X&) { cout << "variable reference\n"; } void g( 阅读全文
posted @ 2025-02-16 22:07 cwtxx 阅读(1) 评论(0) 推荐(0) 编辑
摘要:什么是shared_from_this ? 从msvc上摘下来的memory中关于shared_from_this类的实现。还是比较好理解这个类在做什么的,内部有一个智能指针私有成员,不过是weak_ptr类型的,公有方法中提供了shared_from_this函数,如果调用这个函数,就会将weak 阅读全文
posted @ 2025-02-16 22:14 cwtxx 阅读(11) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示