
C++
文章平均质量分 77
C/C++技术点总结
沭沭wen
专注分享 IT 技术「Qt/C++/Python/Windows/Linux 等」、学习资料、职场面经,目前从事机器视觉行业。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++11特性】Lambda表达式(匿名函数)
C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。在QT之前的总结中,我们可以知道其是通过外部的 [ ] 来明确函数体内部可以访问的外部变量,这个过程称为Lambda表达式 “捕获” 了外部变量。类似参数传递方式(值传递、引入传递、指针传递),在Lambda表达式中,外部变量的捕获方式也有值捕获、引用捕获、隐式捕获。原创 2025-04-28 22:18:49 · 1108 阅读 · 0 评论 -
【C++11特性】右值引用
引用本质是别名,可以通过引用修改变量的值,传参时传引用可以避免拷贝,其实现原理和指针类似。原创 2025-04-28 22:10:33 · 682 阅读 · 0 评论 -
【三大特性】对象模型
引用《深度探索C++对象模型》这本书中的话:直接支持面向对象程序设计,包括了构造函数、析构函数、多态、虚函数等等,这些内容在很多书籍上都有讨论,也是C++最被人熟知的地方(特性)。而对象模型的底层实现机制却是很少有书籍讨论的。。在我看来,对象模型研究的是对象在存储上的空间与时间上的更优,并对C++面向对象技术加以支持,如以虚指针、虚表机制支持多态特性。原创 2025-04-27 21:19:34 · 994 阅读 · 0 评论 -
【三大特性】虚表 内存分布
之前研究到,。原创 2025-04-27 21:13:14 · 694 阅读 · 0 评论 -
【三大特性】函数重载、覆盖、隐藏规则(编译时多态)
1.子类重新定义父类中有相同名称的非虚函数( 参数列表可以不同 )如果存在两个或多个具有包含关系的作用域,外层声明了一个标识符,而内层没有再次声明同名标识符,那么外层标识符在内层依然可见,如果在内层声明了同名标识符,则外层标识符在内层不可见,这时称内层标识符隐藏了外层同名标识符,这种现象称为隐藏规则。相同的范围(在同一个类中)函数名字相同,参数不同virtual关键字可有可无不同的范围,分别位于基类和派生类中函数的名字相同,参数相同基类函数必须有virtual关键字。原创 2025-04-26 19:45:18 · 954 阅读 · 0 评论 -
【三大特性】多态及虚机制
编译器在编译的时候,发现Father类中有虚函数,此时编译器会为每个包含虚函数的类创建一个虚表(即 vtable),该虚表是一个一维数组,在这个数组中存放每个虚函数的地址。原创 2025-04-26 19:42:34 · 983 阅读 · 0 评论 -
【基础】nothrow 和 new 区别
在C++编码中使用new分配堆内存时,进行Test-for-NULL检查是一个好习惯。原创 2025-04-25 20:26:38 · 113 阅读 · 0 评论 -
【基础】类或结构体 大小判定
【原因】:成员函数还是以一般的函数一样的存在。a.fun()是通过fun(a.this)来调用的。。其实成员函数的大小不在类的对象里面,同一个类的多个对象共享函数代码。而,而这个指针指向的是一个table,table里面记录的各个成员函数的地址( 具体可以看多态函数的实现 )。所以我们访问成员函数是间接获得地址的。所以这样也就增加了一定的时间开销,。原创 2025-04-25 20:23:45 · 854 阅读 · 0 评论 -
【基础】强制类型转换
上面对于const_cast的讨论,其实不太能明白const_cast的具体用处。其实呢,我们使用const_cast的目的并不是为了修改项目已经定义了const的变量值,而是。原创 2025-04-25 20:18:46 · 665 阅读 · 0 评论 -
【基础】智能指针分析
智能指针在C++11版本之后提供,包含在头文件<memory>中,auto_ptr(C++11已弃用)shared_ptrunique_ptrweak_ptr每种指针都有不同的使用范围,unique_ptr指针优于其它两种类型,除非对象需要共享时用shared_ptr。如果你没有打算在多个线程之间来共享资源的话,那么就请使用unique_ptr。使用make_shared而不是裸指针来初始化共享指针。原创 2025-04-24 21:46:21 · 899 阅读 · 0 评论 -
【基础】内联函数
内联函数是代码被插入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。宏定义不检查函数参数,返回值什么的,只是展开,相对来说,内联函数会检查参数类型,所以更安全。内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。原创 2025-04-24 21:36:57 · 232 阅读 · 0 评论 -
【基础】指针和引用
【代码】【基础】指针和引用。原创 2025-04-24 21:34:29 · 287 阅读 · 0 评论 -
【基础】new delete 和 malloc free分析
首先需要调用上面提到的 operator new 标准库函数,传入的参数为 class A 的大小,这样函数返回的是分配内存的起始地址,这里假设是 0x007da290。答:C++ 的做法是在分配数组空间时多分配了 4 个字节的大小,专门保存数组的大小,在 delete [] 时就可以取出这个保存的数,就知道了需要调用析构函数多少次了。最后一步就是返回新分配并构造好的对象的指针,这里 t 就指向 0x007da290 这块内存,t 的类型为类 Test_newdelete 对象的指针。原创 2025-04-23 20:59:35 · 580 阅读 · 0 评论 -
【基础】关键字及运算符
仅仅是用来声明外部全局变量(注:extern不能用来定义变量)1)常量指针:强调的是指针对其所指对象的不可改变性。见:【三大特性】函数重载、覆盖、隐藏规则(编译时多态)2)指针常量:强调的是指针的不可改变性。原创 2025-04-23 20:43:20 · 258 阅读 · 0 评论