
C++高级编程
文章平均质量分 71
C++新特性等C++高阶手法
大胡子的艾娃
业精于勤荒于嬉,行成于思毁于随。
展开
-
SVN高阶操作之外部链接
项目、软件打包目录或者代码目录等依赖通用模块、文件等时,应使用SVN的外部链接,在任何一个项目中修改基础了基础库的代码,提交svn后都能同步到其他的项目,但是SVN中只保存了一份。如有错误或不足欢迎评论指出!创作不易,转载请注明出处。原创 2023-02-10 22:21:45 · 2747 阅读 · 0 评论 -
STL迭代器失效的场景总结
STL迭代器失效的场景总结原创 2022-09-28 14:34:04 · 1692 阅读 · 1 评论 -
C++实现内存泄漏检查
对应用程序堆内存分配器(C:malloc、calloc、realloc、free,C++:new、delete、new[]、delete[])进行接管,用链表记录管理堆内存分配和释放,在程序退出时将未释放的内存信息输出至文本。原创 2022-04-09 21:48:50 · 1856 阅读 · 2 评论 -
静态链接库和动态链接库
一、静态链接库和动态链接库1、制作方法2、动态库制作中extern “C” _declspec(dllexport)导出,才会生成lib文件3、查看动态库生成的接口二、静态链接和动态链接1、静态库的链接2、动态库的链接1)LoadLibrary、GetProcAddress、FreeLibrary2)导出lib的动态库可根据lib和头文件隐式链接三、#ifdef TESTDLL_EXPORTS#define TESTDLL_API __declspec(dllexport)#else原创 2022-03-05 01:32:50 · 4611 阅读 · 2 评论 -
C++弱引用智能指针weak_ptr的用处
利用weak_ptr,我们可以解决常见的空悬指针问题以及循环引用问题。转载 2022-01-17 21:00:00 · 669 阅读 · 0 评论 -
C++运算符重载总结
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!更多内容请关注个人博客:https://blog.youkuaiyun.com/qq_43148810...原创 2020-10-31 00:22:39 · 3964 阅读 · 0 评论 -
深度探索C++对象模型(笔记)
https://zhuanlan.zhihu.com/p/41309205转载 2021-10-27 14:38:59 · 378 阅读 · 0 评论 -
C++模板编程之类型萃取 惊鸿一瞥
http://11142019.bog.51cto.com/11132019/1846832原创 2021-08-17 23:07:26 · 554 阅读 · 0 评论 -
C++STL内存管理源码剖析
内存管理原创 2021-08-16 23:27:01 · 444 阅读 · 0 评论 -
自定义可拓展Variant参数类型
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、参数对外接口的使用 ParamPtr CCirclePtr = ParamManager::createParam(EParamType::CIRCLE); //工厂函数 ParamPtr xPtr; CCirclePtr->getSubParam(center + "." + ptX,原创 2021-08-12 00:23:34 · 418 阅读 · 0 评论 -
C++STL容器总结
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!1.std::stringcopy-on-write2.map中insert已有的key值会失败,但map[key]=val,无该键值对则创建,有则赋值val更多内容请关注个人博客:https://blog.youkuaiyun.com/qq_43148810...原创 2021-07-26 15:44:44 · 264 阅读 · 0 评论 -
C++17 any类(万能容器)详解
any是一种很特殊的容器,它只能容纳一个元素,但这个元素可以是任意的类型,可以是基本数据类型(int,double,char,float…)也可以是复合数据类型(类、结构体),那它究竟有什么用?目前来说我没发现什么太大的作用,如果看官发现什么有用的作用,分享一下=.=操作演示:#include<iostream>#include<any>#include<vector>#include<set>using namespace std;int ma原创 2021-08-05 00:26:15 · 4221 阅读 · 0 评论 -
vector与string扩容原理说明
https://blog.youkuaiyun.com/yangshiziping/article/details/52550291原创 2021-07-26 14:17:54 · 440 阅读 · 0 评论 -
C++字符串std::string
https://blog.youkuaiyun.com/SavitarYu/article/details/81029676https://blog.youkuaiyun.com/qq_38877888/article/details/104010047原创 2021-07-25 23:24:34 · 1354 阅读 · 1 评论 -
深入理解C++中std::string的内存布局
一、深入理解 C++ String 在内存中的布局:二、32位程序下内存探讨对于长度小于等于15个字符的字符串:数据会保存到,Data的总计16个字节中,如果string 是零时变量,整个字符串的数据则位于栈上对于数据大于15个字节的字符串:会在堆上分配一块额外的数据区域,并将所有数据填充到堆中,然后将堆指针 赋值到 Data 的第一个 指针位置 (Data前4个字节)原文链接:https://blog.youkuaiyun.com/sols000/article/details/103989637转载 2021-07-25 23:16:45 · 3349 阅读 · 0 评论 -
Copy On Write写时拷贝技术
https://blog.51cto.com/u_11142019/1846842原创 2021-07-25 22:39:33 · 242 阅读 · 0 评论 -
元组tuple
#include <tuple>template<class _Ty> struct _Tuple_val { constexpr _Tuple_val() : _Val() { // default construct } _Ty _Val; }; template<class... _Types>class tuple;template<>class tuple<>{}; // empty tupletem原创 2021-07-02 21:47:02 · 192 阅读 · 0 评论 -
c++11 Variadic Templates(...)(可变参数列表)
Variadic Templates(…) //视频:2,15-17示例:void print(){} //结束template<typename T,typename... Types>void print(const T& firstArg,const Types&... args){//sizeof...(args);//求这包东西的大小cout<<firstArg<<endl;print(args..);}//调用过程//p转载 2021-07-02 20:25:26 · 487 阅读 · 0 评论 -
initialize(initialize_list<T>)
initialize(initialize_list) //视频:4-6#include <initializer_list> //头文件templateclass initializer_list{public:_NODISCARD constexpr const _Elem * begin() const noexcept;_NODISCARD constexpr const _Elem * end() const noexcept;_NODISCARD constexp原创 2021-07-02 00:54:01 · 310 阅读 · 0 评论 -
using关键字作用小结
1)、using-directives(打开命名空间)using namespace std;using std::cout;using Base::date;(Base为类名)2)、type alias:using value_type = _Ty;using allocator_type = _Alloc;using pointer = typename _Mybase::pointer;using const_pointer = typename _Mybase::const_pointe原创 2021-07-02 00:31:09 · 206 阅读 · 0 评论 -
C++可调用对象
可调用对象接受或者可调用对象的封装bind、function、packaged_task原创 2021-04-15 23:51:33 · 991 阅读 · 0 评论 -
C++11右值、右值引用以及move语义
右值、右值引用、move语义(forward、swap)临时对象(即将销毁),不可取地址,只能出现在 operator= 右侧(标准库中有例外,如string、complex 等)。典型的 rvalue:字面常量(如1、2…等)、匿名对象(临时对象)以及函数的返回值等。另外,也可以通过 std::move 显式地将一个左值转换为右值。右值可以绑定到一个const 的左值引用,不能绑定到非常量左值引用拷贝构造:检测自我复制move构造:has a 的优化左值、右值左值引用、右值引用移动构造和移原创 2021-03-27 00:22:52 · 292 阅读 · 0 评论 -
C++虚函数和虚函数表原理
虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。虚函数的调用会被编译器转换为对虚函数表的访问:ptr->f(); //ptr代表this指针,f是虚函数*(ptr->vptr[1])(ptr);12上述代码中,ptr代表一个this指针,ptr指向的vptr是类内部的虚表指针。这个虚表指针会被放在类的最前方(VS2017),1就是虚函数指针在虚函数表中的索引值。在这个索引值表示的虚表的转载 2021-03-25 11:42:23 · 128 阅读 · 0 评论 -
Effective C++总结
1、视 C++ 为一个语言联邦(C、Object-Oriented C++、Template C++、STL)2、宁可以编译器替换预处理器(尽量以 const、enum、inline 替换 #define)3、尽可能使用 const4、确定对象被使用前已先被初始化(构造时赋值(copy 构造函数)比 default 构造后赋值(copy assignment)效率高)5、了解 C++ 默默编写并调用哪些函数(编译器暗自为 class 创建 default 构造函数、copy 构造函数、copy as转载 2021-03-08 21:28:18 · 392 阅读 · 2 评论 -
C++之explicit的作用介绍
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!1、C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit...原创 2020-02-06 22:07:51 · 6190 阅读 · 0 评论 -
C++11新特性:auto和decltype
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!一、auto作用编程时候常常需要把表达式的值赋给变量,需要在声明变量的时候清楚的知道变量是什么类型。然而做到这一点并非那么容易(特别是模板中),有时候根本做不到。为了解决这个问题,C++11新...原创 2020-02-12 11:28:26 · 651 阅读 · 0 评论 -
智能指针之共享指针shared_ptr、弱指针weak_ptr、独占式指针unique_ptr
@著作权归作者所有:来自优快云博客作者大胡子的艾娃的原创作品,如需转载,请注明出处https://blog.youkuaiyun.com/qq_43148810,否则将追究法律责任。如有错误的地方欢迎指正,谢谢!class MyClass{public: MyClass(int m = 0) :M(m){ std::cout << "构造 " << M << std::endl; } MyClass(MyClass& myC) :M(myC.M){原创 2020-10-07 16:37:37 · 2984 阅读 · 1 评论