![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
泛型编程
文章平均质量分 83
Dave_L
这个作者很懒,什么都没留下…
展开
-
C++编译链接模型精要 - 个人笔记
C语言编译器采用单遍编译的方法,只能根据目前看到的代码作出决策;C++为了兼容,也继承了单遍编译,但由于有前向声明这样的存在(函数声明相当于前向声明,还有class的前向声明减少编译时的依赖),不可能完全是单遍编译。C不支持函数重载(从其目标文件中可以看到,其中生成的函数名字不带参数)。C语言采取的是,传统的one-pass链接器, 使用时要让越基础的库放在后面,保证每个未决符号都能在后面出现的库中找到。这样的顺序使得链接器只需要记住尚未定义的符号,若反过来则需要更多的内存(链接器不知道哪些符号原创 2021-05-17 16:16:53 · 260 阅读 · 0 评论 -
effective C++ 学习总结
effective C++ 43条,三种访问模板基类中,使用this->访问的方法template<typename T>class A{ public: void f() { cout << "A::f()" << endl; }}template<typename T>class B:public A<T>{ public: void f() { .原创 2021-01-23 10:01:22 · 490 阅读 · 0 评论 -
理解并简单实现智能指针(暂不考虑多线程安全
智能指针就是RAII资源管理的自然体现。首先,一个简易的auto_ptr,包含初始化、拷贝、赋值等基本操作。#include <iostream>using namespace std;class shape {public: virtual ~shape() {}};class circle : public shape {public: ~circle() { puts("~circle()"); }};template<typename T>cla.原创 2021-01-24 15:53:03 · 179 阅读 · 1 评论 -
STL源码 - traits技术
iterator traitsiterator必须提供的5种相关类型:iterator_category:iterator的移动性质value_type:iterator所指元素本身类型difference_type:两个iterator之间的距离可以用何种类型表示pointer:reference:算法与迭代器的关系:如下图,算法通过迭代器获取这几种相关类型信息整个的流程如下图,算法对所需类型信息提问,迭代器回答。但对于原生指针(相当于退化的iterator),其无原创 2020-11-07 15:02:36 · 146 阅读 · 0 评论 -
面向对象技术与C++编程-课程笔记
编写通用程序利用通用指针类型void*和强制类型转换,实现“泛型”编程通用的交换程序// 两整数交换/* # include <stdio.h>void swap( int *x , int *y ){ int tmp = *x ; *x = *y ; *y = tmp ;}int main(){ int x , y ; scanf("%d%d",&x,&y) ; swap( &x , &y ) ; printf("%d %原创 2020-09-22 12:21:27 · 193 阅读 · 0 评论