
C++基础知识总结
文章平均质量分 79
包括lambda表达式,move,模版等
qls315
大厂C++
展开
-
C++多线程-signal handler使用
C++多线程--signal handler使用原创 2024-01-19 21:22:52 · 712 阅读 · 0 评论 -
std::locale系列--基本概念
本节主要简单的介绍一下本系列的背景以及相应的基本术语,下一节开始我们会详细讲解同std::locale相关的各个概念 原理及使用方式。原创 2023-01-01 08:30:00 · 1538 阅读 · 0 评论 -
模版介绍与STL六大组件
模版介绍STL六大组件原创 2021-02-02 19:39:15 · 220 阅读 · 0 评论 -
C++11/14 lambda表达式使用及解析(二)
引言很久之前总结过一篇C++11/14 lambda表达式使用及解析,其大体介绍了C++11/14中lambda表达式的基本使用,关于其他高级特性/使用等均未涉及;因此本文继该文章,进一步总结lambda表达时的高级特性(包括基本属性,细节)和使用。由于目前C++20已经发布,因此,计划总结成如下系列:C++11/14 lambda表达式使用及解析(二)主要总结C++11中的lambda特性及使用。C++11/14 lambda表达式使用及解析(三)主要总结C++14中的lambda特性及使原创 2021-10-22 17:55:14 · 1259 阅读 · 0 评论 -
C++11/14 lambda表达式使用及解析
0. 引言最近和同事讨论了一下C++中lambda函数的使用,因此想着周末总结一下lambda相关知识。1. lambda的定义(lambda是什么?)1.1 lambda表达式的定义lambda函数的背景可以看看相关链接https://www.zhihu.com/question/24962794可能非官方。下面看一下C++ Primer 给出的lambda表达式的定义一个lambda表达式表示一个可调用的代码单元。一个表达式具有如下形式[捕获列表] (参数列表)->..原创 2020-07-12 17:53:30 · 2584 阅读 · 0 评论 -
template系列--decltype与std::declval
引言最近在重新复读《C++ template》相关知识,因此预计总结相关知识汇成template系列。目前碰到decltype与std::declval相关知识,为了搞懂decltype和std::declval的搭配使用原理,我参考了如下链接,decltype specifierWhy does std::declval add a reference?What are unevaluated operands in C++?C++ Templates(第2版 英文版)最终总结原创 2021-10-14 11:46:12 · 476 阅读 · 0 评论 -
C++对象模型
C++程序设计模型直接支持三种程序设计范式:程序模型(面向过程的编程),抽象数据类型模型(ADT)以及面向对象模型(OO)。在C++中,只有通过指针和引用的间接处理,才支持OO程序设计所需要的多态性质。并且多态只存在于一个个的public class体系中。多态的主要用途是经由一个共同的接口来影响类型的封装,此接口通常被定义在一个抽象的基类中。那么C++是如何支持多态的呢?有三种方式支持多态。1....原创 2018-06-05 14:16:09 · 215 阅读 · 0 评论 -
《深入理解C++对象模型》+默认构造函数
explict关键字之所以被导入C++,是为了给程序员提供一种方法,使他们能够制止单一参数的构造函数被当做一个转换运算符。《深入理解C++对象模型》关于C++默认构造函数什么时候并合成有四点要求。在介绍这四点要求之前,需要先了解虚基类是如何实现的?虚基类是为了解决多重继承出现的二义性。class X{public : int x;}class A:virtual public X{public :...原创 2018-06-06 11:02:00 · 281 阅读 · 0 评论 -
C++primer 前两章总结
C++primer 前两章总结最近又开始复习C++primer 这本书,突然发现了好多以前没有发现的知识点。进一步加深了自己的理解。特总结如下。目前刚刚看完第一章和第二章。 对于main函数 的return 值,如果返回0,则表示程序正确执行,对于返回的非0值,则对于多数系统而言,其一般定义的是程序的出错码。 基本的数据类型,在计算机中的本质均是位模式,因此 int ...原创 2018-08-06 15:58:59 · 258 阅读 · 0 评论 -
C++自制简易版智能指针实现过程分析
1. 引言C++中,由于没有垃圾回收机制,当程序员申请了某些资源(譬如new 某个对象A),如果程序员自己负责释放这些资源,则很可能会产生内存泄露,因此现代C++11引进了智能指针来尽量降低资源泄露的可能。本博客便是我自己在学习more effective C++ 的过程,记录自制简易版智能指针的过程。方便以后复习。2. 智能指针的定义以及粗略实现2.1 智能指针的定义智能指针是看起来、用起来像C++内建指针的对象2.2 智能指针SmartPtr的粗略实现智能指针可以像内建指针一样.原创 2020-06-14 15:32:13 · 436 阅读 · 0 评论 -
进一步理解C++11中特种成员函数的生成规则
1. 特种成员函数是什么(定义)C++11中的特种成员函数是指编译器会自动生成的函数:默认构造函数、析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符。对于特种成员函数,C++编译器生成的特种成员函数都是public访问级别,且一般都是非虚函数。之所以说都是非虚函数,是因为存在一种情况会使编译器生成的析构函数为虚函数:class A {public: A() { std::cout << "A constructor" <&l原创 2020-06-18 14:39:39 · 287 阅读 · 0 评论 -
C++引用计数原理以及简易版引用技数String的实现
1. 引用计数的作用(为什么使用引用计数)引用计数是一项允许多个等值对象共享同一实值的技术。此技术一般由下面两个方向驱动:a. 引用计数可以简化堆对象的薄记工作。一旦某个对象由new 分配出来,则记录该对象的所有者是一件重要的事情,只有该对象的所有者有权删除该对象。引用计数可以消除记录对象所有权的负荷,因为当对象运用了引用计数,他便拥有自己的所有权。b. 引用计数可以使许多等值对象共享同一个实值。如果许多对象拥有相同的值,那么存储多次是一种资源浪费。如果能让这些对象共享同一实值,不仅可以节省原创 2020-06-15 11:53:59 · 520 阅读 · 0 评论 -
C++成员函数修饰词的意义和使用(&, &&, const, override)
1. 引言今天逛知乎,发现有人问在C++成员函数后加& 有什么作用?因此就想着回答一下,就顺带研究了一下C++相关的几个成员函数修饰词,并总结了一下相关的用法和意义2. C++成员函数修饰词C++11中的成员函数修饰词主要有&、&&、const;在这里我把override也看作成员函数修饰词,这个是因为override也可以向&、&&、const用在成员函数后, 但override的作用范围有限,只能用于虚函数且虚函数需要改写的时候。下面从原创 2020-06-19 09:50:45 · 4909 阅读 · 0 评论 -
std::move()的学习总结
目录1. 移动语义2. std::move的实现及使用3. 总结1. 移动语义移动语义可以使得编译器使用不那么昂贵的移动操作,来替换昂过的复制操作。同拷贝构造函数、拷贝赋值运算符赋予人们复制意义的能力一样,移动构造函数、移动赋值运算符也赋予人们移动语义的能力。更通俗的说:移动语义是通过移动构造函数或者移动赋值运算符实现的举个例子,对于C++标准库提供的std::shared_ptr智能指针,当对其进行复制操作时,需要增加其引用计数,而引用计数是个原子类型,因此增加引用计数是个耗时操作原创 2020-06-20 10:53:03 · 3950 阅读 · 0 评论 -
C++引用计数原理以及简易版引用技数String的实现(二)
在C++引用计数原理以及简易版引用技数String的实现中,实现了一个简单的引用计数的String,并且也实现了operator []方法。下面考虑这样一种情景: RcString s1 = "hello"; char* p = &s1[1]; RcString s2 = s1; *p = 'x';上述代码 *p = 'x'同时修改了s1和s2, 而意图是仅仅修改s1, 那么如何解决这种问题呢?首先我们分析:为什么*p = 'x' 会导致s1和s2同时被修改呢?原创 2020-06-23 14:52:09 · 189 阅读 · 0 评论