首页
学习
活动
专区
工具
TVP
发布

技术随笔心得

专栏成员
102
文章
86628
阅读量
25
订阅数
深入浅出C++类型擦除
类型擦除是 C++ 中一种用于实现多态性的编程技术,它允许在不牺牲性能或引入不必要的运行时开销的情况下进行多态性操作。通过隐藏对象的实际类型并提供统一的接口,类型擦除使得可以以多态的方式处理不同类型的对象,同时在运行时推迟对实际类型的确定。
高性能架构探索
2024-05-17
1610
性能大杀器:c++中的copy elision
我们简单的介绍了下移动语义,今天聊聊编译器的一个常见优化拷贝消除(copy elision)。
高性能架构探索
2024-04-23
1110
从示例入手了解惯用法之PIMPL
PIMPL是pointer to implementation的缩写,意指指向实现的指针,是一种广泛使用的减少编译依赖性的技术。
高性能架构探索
2024-04-17
1030
从一次编译器告警说起~~
最近在抓代码质量这块,修改编译器告警规则入手,结合群里推荐的的clang-tidy来进行静态代码分析,真所谓不看不知道,一看吓一跳,光提示就一堆,挨个进行分析,发现了一个很有意思的告警**-Wmissing-field-initializers**。
高性能架构探索
2024-04-10
690
虚函数的性能真的那么差?
昨天在查阅某个问题的时候,突然看到了关于各个操作的性能损耗,今天就借助这篇文章,聊聊我们印象中性能很差的虚函数~~。
高性能架构探索
2024-04-10
1230
<<C++之旅>>阅读笔记
几周前,出版社赠了本C++之父新作<<C++之旅>>,因为当时比较忙,所以一直在手边放着,有时间的时候随意翻几页,断断续续也看了一部分,今天借助本文,分享下。
高性能架构探索
2024-02-01
1060
未来已来:从SFINAE到concepts
也就是说,在fun()函数内部,将参数x赋值给一个string类型的v,但是在main()函数中 ,调用fun()函数时候传入了1,这个编译器会推导为int类型,那么把一个int类型赋值给string,编译器会报错。
高性能架构探索
2024-01-26
1480
未来已来:C++ modules初探
在C++中,编译器在编译某个源文件时确实需要查看其中所有需要调用的函数的声明。这是因为C++是一种静态类型语言,编译器在编译阶段需要了解函数的签名(返回类型、函数名、参数类型和顺序等信息),以便进行类型检查和生成正确的机器代码。因此,如果我们在一个文件中定义一个函数,并想在另一个文件中调用它,则也必须在该文件中声明它。只有这样编译器才能生成适当的代码来调用该函数。
高性能架构探索
2024-01-22
1920
一次诡异的内存泄漏
最近在补一些基础知识,恰好涉及到了智能指针std::weak_ptr在解决std::shared_ptr时候循环引用的问题,如下:
高性能架构探索
2024-01-15
1810
Modern c++快速浅析
•template<typename T> void func(T& param);在这个示例函数中,如果传递进是一个const int&的对象,那么T推导出来的类型是const int,param的类型是const int&。可见引用性在型别推导的过程中被忽略•template<typename T> void func(T param);在这个示例函数中,我们面临的是值传递的情景,如果传递进的是一个const int&的对象,那么T和param推导出来的类型都是int如果传递进的是一个const char* const的指针,那么T和param推导出来的类型都是const char*,顶层const被忽略。因为这是一个拷贝指针的操作,因此保留原指针的不可更改指向性并没有太大的意义
高性能架构探索
2024-01-03
1580
std::string继承之番外篇
群里经常有这样一个现象,当有新人进群的时候,总会有个面试环节,经常问的一个问题就是std::string能否被继承,一开始可能是技术问题,后面多了,就被玩成了梗,不过梗归梗,今天借助这篇文章,聊聊继承相关的Mordern新特性--override和final。这俩特性相对于其他引入的特性,性能上没有带来大的提升,唯一或者说比较重要的好处则是能让我们的程序在继承类和覆写虚函数时更安全,更清晰。
高性能架构探索
2023-12-14
2940
Moderen Cpp之Enumerations
自C++11起,引入了新的枚举,至此,C++支持两种枚举,如果将新引入的枚举成为scoped enumerations的话,那么之前的则成为unscoped enumerations。
高性能架构探索
2023-12-06
860
初始化|这些年踩过的坑
统一初始化又称为列表初始化,自C++11引入,使用花括号(Brace-initialization)方式,主要目的是为了简化和统一不同的初始化方式,提高代码的可读性和可维护性,同时减少了某些特殊情况下可能出现的二义性。是Modern C++开发人员最应该了解和掌握的新特性之一。它的出现,消除了以前在初始化基本类型、聚合类型和非聚合类型、以及数组和标准容器之间的区别,以提供更一致的初始化语法。
高性能架构探索
2023-11-24
1670
【ModernCpp】新特性之CTAD
最近在阅读C++ Templates 2nd,发现有些很有意思的新特性,今天,借助本文,分享给大家。
高性能架构探索
2023-10-24
2570
Empty Base Optimization
说到C++中的Empty Base Optimization(简称ebo)可能大家还是比较陌生,但是C++中每天都在用的std::string中就用到了ebo。
高性能架构探索
2023-10-16
2060
性能优化利器之constexpr
最近在升级系统和进行一些性能优化,业余时间也看一些技术书籍和视频,看了下上次更新文章的时间,大致在一个月前了,确实有点久了,所以赶紧拾起来,不能让大伙忘了我不是😁。
高性能架构探索
2023-09-06
3420
typedef vs using
C语言支持类型别名typedef,显然,CPP也支持咯。不过自CPP11(也称之为Modern CPP)开始,引入了using关键字用以表示类型别名。
高性能架构探索
2023-09-05
1580
lambda with template
好久没发文了,一方面因为实在太忙了,一方面也在自我提升,发现要学的越来越多。在群里的,大抵都知道我上半年基本在重构和优化,将gcc版本进行了升级,从之前的4.9.2升级到了现在的11.2.1(支持c++17),这样在重构过程中难免要用到新特性,所以也就在这个过程中一边学习一遍应用于项目中,毕竟这样才能完全吸收为自己所用嘛。
高性能架构探索
2023-09-05
1410
C++可调用Callable类型的总结
自从在使用 std::thread 构造函数过程中遇到了 Callable 类型的概念以来用到了很多关于它的使用. 因此本文把使用/调查结果总结出来. 包括 Callable 的基础概念, 典型的 Callable 类型介绍. 例如函数对象(狭义), 函数指针, lambda 匿名函数, 函数适配器, std::function 仿函数等.
高性能架构探索
2023-09-05
2370
聊聊结构化绑定
std::map<K, V>的insert方法返回std::pair<iterator, bool>,两个元素分别是指向所插入键值对的迭代器与指示是否新插入元素的布尔值,而std::map<K, V>::iterator解引用又得到键值对std::pair<const K, V>。在一个涉及std::map的算法中,有可能出现大量的first和second,让人不知所措。
高性能架构探索
2023-09-05
2570
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档