
C/C++语言知识
文章平均质量分 87
helloppc90
这个作者很懒,什么都没留下…
展开
-
工程实践中常见的几种设计模式解析及 C++ 实现
以上四种设计模式(单例模式、工厂模式、观察者模式和策略模式)是工程实践中最常用的设计模式之一。每种模式都有其适用的场景和注意事项,合理使用它们可以显著提升代码的质量和系统的可维护性。在实际开发中,我们需要根据具体需求选择合适的设计模式,并结合语言特性和框架进行实现。同时,也要注意避免过度设计,以免增加不必要的复杂性。原创 2025-02-25 11:02:42 · 570 阅读 · 0 评论 -
C++代码编写:优雅与高效兼得的技术分享
以上是一些C++编程中的最佳实践,涵盖了函数设计、命名规范、内存管理、错误处理等多个方面。遵循这些原则可以显著提升代码的质量和可维护性,减少潜在的bug和安全漏洞。希望对你有所帮助!原创 2025-02-24 16:49:19 · 440 阅读 · 0 评论 -
2021-08-12
40.1 函数、类模版模版可分两类:函数模版,类模版。函数模板可被重载,而类模板不能被重载,也就是说允许存在两个同名的函数模板,还可以对它们进行实例化,使它们具有相同的参数类型。函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。40.2 模板特化对单一模板提供的一个特殊实例,使每种类型都具有相同的功能,将一个或多个模板参数绑定到特定的类型或值上。特化分为了两种,全特化和偏特化。不能将特化和重载混为一谈,全特化和偏特化都没有引入一个全新的模板或者模原创 2021-08-12 17:23:19 · 472 阅读 · 0 评论 -
软件开发基础知识
34. 内存资源及管理内存被分成五个区:栈、堆、静态存储区、常量区、代码区。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D6oQfAxQ-1628760080125)(file:///D:/写文章-优快云博客_files/89263655e6e048caa4615ec16accb0eb.png)]栈:存放函数的参数和局部变量,编译器自动分配和释放。栈属于计算机系统的数据结构,进栈出栈有相应的计算机指令支持,而且分配专门的寄存器存储栈的地址,效率高,内存空间是原创 2021-08-12 17:22:51 · 814 阅读 · 0 评论 -
软件开发基础知识
19. std::move语义并不移动任何东西,唯一功能是将一个左值强制转化为右值引用,继而可通过右值引用使用该值,以用于移动语义。本质是一个无条件static_cast,形参为左值类型,返回右值引用。1) 函数原型定义template <typename T>typename remove_reference<T>::type&& move(T&& t) { return static_cast<typenam原创 2021-08-12 17:21:07 · 989 阅读 · 0 评论 -
软件开发基础知识(1)
3.虚函数和纯虚函数3.1动态编译VTABLE实际是一个函数指针的数组,每个虚函数占用这个数组的一个slot。一个类只有一个VTABLE,不管它有多少个实例。派生类有自己的VTABLE,但派生类的VTABLE与基类的有相同的函数排列顺序,同名的虚函数被放在两个数组的相同位置。在创建类实例的时候,编译器还会在每个实例的内存布局中增加一个vptr字段,该字段指向本类的VTABLE。通过这些手段,编译器在看到一个虚函数调用的时候,就会将这个调用改写。类的实例对象不包含虚函数表,只有虚指针;一个类的虚函数在原创 2021-08-12 17:18:16 · 946 阅读 · 0 评论 -
c++软件开发基础知识
3.虚函数和纯虚函数3.1动态编译VTABLE实际是一个函数指针的数组,每个虚函数占用这个数组的一个slot。一个类只有一个VTABLE,不管它有多少个实例。派生类有自己的VTABLE,但派生类的VTABLE与基类的有相同的函数排列顺序,同名的虚函数被放在两个数组的相同位置。在创建类实例的时候,编译器还会在每个实例的内存布局中增加一个vptr字段,该字段指向本类的VTABLE。通过这些手段,编译器在看到一个虚函数调用的时候,就会将这个调用改写。类的实例对象不包含虚函数表,只有虚指针;一个类的虚函数在原创 2021-08-12 11:39:26 · 589 阅读 · 0 评论 -
C++标准库(STL)与泛型编程
C++标准库(STL)与泛型编程学习网站:cplusplus.comcppRerference.com学习书籍:《STL源码剖析》STL体系结构基础介绍STL六大部件:容器、分配器、算法、迭代器、适配器、仿函数迭代器:泛化的指针分配器:分配内存仿函数:作用类似函数,加减适配器(变压器):count_if:给出条件之下符合条件的个数;bind2nd:绑定第二参数;not1 :否定,大于等于40;end指向最后一个元素的下一个元素c++11的新特性:range-based原创 2021-03-31 21:34:56 · 686 阅读 · 2 评论 -
面向对象编程下---兼谈对象模型
面向对象编程下—兼谈对象模型转换函数Fraction转换为double,没有return type:将fraction转换为double43=3/1;所以第二个参数可以默认为1;one-argument 一个参数就可以了;上面代码考虑将4转换为Fraction。当有两条路可行之时,会发生歧义二义性;explicit明白的,明确的,不可以将3变为3/1,用在构造函数前面,标准库中转换函数的利用代理,a代表B,一定有一个函数将a转换为b;pointer-like clasa原创 2021-03-30 20:55:03 · 201 阅读 · 0 评论 -
面向对象设计
面向对象的编程类之间的关系有复合(composition)、委托(aggregation)和继承(extension) 3种.继承我里头里面有某种东西;queue里面的功能有deque来实现;A拥有B;A的所有功能都有B来实现;Adapter(适配器);queue,用别的来实现内存角度构造和析构函数顺序委托(Delegation)指针指向右边的类;by reference (指针也叫)has a :有外部就有内部,一起的委托:不同步。左边指针可以指向不同的类,实现不同的功原创 2021-03-30 00:37:41 · 255 阅读 · 0 评论 -
C/C++语言基础知识
C/C++语言基础知识C/C++语言malloc和calloc、realloc、new的区别strcpy和memcpy的区别智能指针shared_ptrweak_ptrunique_ptrauto_ptrauto_ptr 与 unique_ptr 比较强制类型转换运算符static_castdynamic_castconst_castreinterpret_castbad_cast运行时类型信息 (RTTI)dynamic_casttypeidtype_info指针与引用的区别堆和栈的区别内存内存分配和管理原创 2020-12-24 19:41:40 · 266 阅读 · 1 评论