05 2022 档案
摘要:这篇文章详细讲一下resharper C++在vs2022中的配置,让他拥有跟clion一样好用的代码补全功能。 为什么clion写代码体验很好好用为啥还要用vs呢,因为网上很多教程都是基于visual studio讲的,有些库用clion不好配置,所以只能再用vs。vs2022的代码补全功能实在太
阅读全文
摘要:将Nginx中的内存池实现移植到c++,通过面向对象的方式实现 头文件: // // Created by 26685 on 2022-05-29 19:57. // Description:NginxMemoryPool.h // #ifndef MEMORYPOOL_NGINXMEMORYPOO
阅读全文
摘要:C++STL中的空间配置器只有一种,是同过底层的malloc和free实现的,空间配置器中有四种方法: SGI STL中有两种空间配置器,一级allocator是与stl一致的malloc和free的方式,二级allocator是通过内存池的方式实现的。 SGI STL中的vector容器的模板中用
阅读全文
摘要:通过thread类编写C++多线程程序 线程内容: 1、如何创建启动一个线程? std::thread定义一个线程对象,传入线程所需的线程函数和参数,线程自动开启 2、子线程如何结束? 子线程函数运行完成,线程就结束了 3、主线程如何处理子线程 t.join() : 等待t线程结束,当前
阅读全文
摘要:转载自typedef介绍 本文介绍C语言中的关键字 typedef 的用法。 在C++11中用using替代typedef 1 概述 typedef 为C语言的关键字,作用是为一种数据类型定义一个新名字,这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 ty
阅读全文
摘要:绑定器bind1st,bind2nd vector<int> vec; for(int i=0;i<20;i++){ vec.push_back(rand()%100); } showContainer(vec); sort(vec.begin(),vec.end(),greater<int>())
阅读全文
摘要:C++中的智能指针 智能指针的基础知识 智能指针能做到保证资源的自动释放 利用栈上对象离开作用自动析构的特性保证自动释放。 //智能指针简单的实现 template<typename T> class CSmartPtr{ public: CSmartPtr(T* ptr= nullptr):_mp
阅读全文
摘要:这一节中主要讲了对象和函数在使用和调用过程中一些注意事项,比较重要的是右值引用和最后的move和forward 对象的使用过程中调用了哪些方法? 对于以下这个测试类,列出了十几种不同的定义方式 class Test { public: Test(int a = 4, int b = 10) : ma
阅读全文
摘要:STL这部分推荐直接看《C++ primer》的9到11章内容,有非常详细的接口列表,还有很多例子。附录里还有常用的泛型算法,适合经常看一下 vector容器 底层数据结构:动态开辟的数组,每次以原来空间大小的2倍进行扩容的 vector<int> vec; deque双端队列和list链表 初始的
阅读全文
摘要:理解虚基类和虚继承 多重继承:代码复用,一个派生类有多个基类。如:class C: public A,public B{}; 虚基类:virtual可以修饰继承方式,是虚继承,被虚继承的类,称作虚基类。class A:virtual public B{}; 虚继承的类中会多一个vbptr指向vbta
阅读全文
摘要:这一部分内容可以直接看《C++ primer》第十五章,这里讲的基本上都是重复的。第十五章的最后一个小节还有一个综合性的代码案例,包含操作符重载、继承、多态等等。第十五章的笔记可以看我的另一篇随笔第十五章 面向对象程序设计 继承的基本意义 继承的本质(好处): 代码的复用; 在基类中给所有派生类提供
阅读全文
摘要:复数类CComplex 编译器做对象运算的时候,会调用对象的运算符重载函数(优先调用成员方法);如果没有成员方法,就砸全局作用域找合适的运算符重载函数 ++和--运算符是单目运算符,在参数列表里放上一个int表示其在数的前面还是后面:operator++()表示前置,operator++(int)表
阅读全文
摘要:转载自https://github.com/applenob/Cpp_Primer_Practice,看Cprimer的时用的笔记。自己做了一些补充,感谢前人的总结! 这章比较难,初学C的可以结合《Essential C++》的第五章学习。回过头来再看这一章会轻松一点。 拷贝控制操作(copy co
阅读全文
摘要:转载自https://github.com/applenob/Cpp_Primer_Practice,看C++primer的时用的笔记。自己做了一些补充,感谢前人的总结 OOP:概述 面向对象程序设计(object-oriented programming)的核心思想是数据抽象、继承和动态绑定。 继
阅读全文
摘要:一、函数模板 模板不能在一个文件中定义在一个文件中使用。 模板代码调用之前,一定要看到模板定义的地方,这样的话,目标才能够进行正常的实例化,产生能够被编译器编译的代码 所以,模板代码都是放在头文件当中,然后在源文件当中直接进行#include包含 模板的非类型参数 都是常量,只能使用,不能修改 te
阅读全文
摘要:一、类和对象、this指针 OOP语言的四大特征是什么? 抽象 封装、隐藏 继承 多态 类体内实现的方法会自动处理为inline函数。 类对象的内存大小之和成员变量有关 类在内存上需要对齐,是为了减轻cup在内存上的io次数 查看类对象的大小的指令:cl className.cpp /d1repor
阅读全文
摘要:一、掌握形参带默认值的函数 给定默认值的时候是从右向左给,因为函数在内存中的压栈顺序是按照形参列表的元素从右向左依次向内存中压栈 形参是否有默认值对调用效率的问题:如果有一个默认值,在函数调用的过程中会少一条mov指令,多个默认值就是减少了多条指令。如果调用的时候用的是立即数,也会减少mov指令,因
阅读全文