![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 64
Jochebed666
这个作者很懒,什么都没留下…
展开
-
c++类和对象
首先,明白c++和C语言的区别:C语言面向过程,c++面向对象; 面向过程:即我们着力于项目的每个过程动作,实现每一个动作方法,分析出求解问题的步骤,通过函数调用逐步解决问题; 面向对象:即着力于对象,从对象个体出发,看对象的需求,将一件事情拆分成不同的对象,靠对象之间的交互完成; 由于c++面向对象的特点,类和对象就由此产生; 类:是抽象的一个类别; 对象:是类的实例化,相当于现实...原创 2019-01-13 15:26:38 · 3255 阅读 · 0 评论 -
参考Google的TCMalloc内存池实现并发内存池ConcurrentMemoryPool
项目背景TCMalloc 是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征:对抗内存碎片、在多核处理器能够 scale。之所以学习 TCMalloc,是因为想对内存管理进行深入理解。解决问题提高效率并发处理内存碎片(内碎片、外碎片)三大块thread cache:一个线程对应一个...原创 2019-02-19 18:16:41 · 1124 阅读 · 0 评论 -
多态的底层原理
在上一篇博客中https://blog.csdn.net/Jochebed666/article/details/86596585说明了多态,那么多态的底层原理是什么呢???他与虚函数有没有关联???虚函数的工作原理C++规定了虚函数的行为,但将实现方法留给了编译器作者。 不需要知道实现方法就可以使用虚函数。但了解虚函数的工作原理有助于更好地理解概念,因此,这里对其进行介绍。通常,编译器...原创 2019-01-22 17:37:49 · 817 阅读 · 0 评论 -
C++多态及静态联编和动态联编
程序调用函数时,将使用哪个可执行代码块呢?编译器负责回答这个问题。将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编(binding)。 在C语言中,这非常简单,因为每个函数名都对应一个不同的函数。在C++中,由于函数重载的缘故,这项任务更复杂。编译器必须查看函数参数以及函数名才能确定使用哪个函数。然而,C/C++编译器可以在编译过程完成这种联编。在编译过程中进行联编被称为静态联编...原创 2019-01-22 16:31:10 · 482 阅读 · 2 评论 -
多继承
多继承之前在https://blog.csdn.net/Jochebed666/article/details/86571445博客中主要提到了单继承,那么什么是多继承呢???多继承即一个子类可以有多个父类,它继承了多个父类的特性。C++ 类可以从多个类继承成员,语法如下:class <派生类名>:<继承方式1><基类名1>,<继承方式2>...原创 2019-01-22 12:44:59 · 264 阅读 · 0 评论 -
重载、重写、重定义、覆盖、隐藏的区别
重载重写=覆盖重定义=隐藏即函数重载或运算符重载,需要在同一作用域里,函数名相同,参数类型或者参数个数不同,返回值可同可不同用于多态,函数名和参数都相同,仅仅只有内部实现不同用于继承,基类和派生类中有同名成员,派生类成员将屏蔽基类对同名成员的直接访问,即在基类和派生类中的同名成员重载举个栗子:#include <iostream>using name...原创 2019-01-21 13:37:23 · 419 阅读 · 0 评论 -
实现一个不能被继承的类
// C++98中构造函数私有化,派生类中调不到基类的构造函数。则无法继承class NonInherit{public: //成员函数定义成static属于类,不属于对象 static NonInherit GetInstance() { return NonInherit(); }private: NonInherit() {}};//// C++11给出了新的关键字f...原创 2019-01-21 13:07:54 · 186 阅读 · 0 评论 -
c++继承
C++ 继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此...原创 2019-01-21 13:03:06 · 150 阅读 · 0 评论 -
迭代器失效问题
转自https://blog.csdn.net/lanbing510/article/details/8796048下面材料整理自Internet&著作。STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时,需要注意一些问题。在使用 li...转载 2019-01-20 17:16:24 · 248 阅读 · 0 评论 -
模板升华
之前写了一篇关于模板的博客https://blog.csdn.net/Jochebed666/article/details/86547166,对模板进行了简单的介绍和运用。下面详细介绍一下模板:模板参数什么是模板参数???template<typename T,……>/template<class T,……>,<>里的就是模板参数。模板参数分为类...原创 2019-01-20 15:44:24 · 197 阅读 · 0 评论 -
c++模板总结
C++ 模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector 或 vector 。总结一句话,模板就是为了防止代码膨胀,让编程实现方便简单产生的一个模具模板有函数模板和...原创 2019-01-19 10:54:22 · 162 阅读 · 0 评论 -
c++的默认成员函数
构造函数成员变量为私有的,要对它们进行初始化,必须用一个公有成员函数来进行。同时这个函数应该有且仅在定义对象时自动执行一次,这时调用的函数称为构造函数(constructor)。构造函数是特殊的成员函数,其特征如下:函数名与类名相同,无返回值。(例:Test(){})对象构造(对象实例化)时系统自动调用对应的构造函数完成初始化。构造函数可以重载。构造函数可以在类中定义,也可以在类中...原创 2019-01-17 22:26:43 · 172 阅读 · 0 评论 -
c++指针与引用的总结
指针是引用吗????在回答这个问题之前先来看看什么是引用☟☟☟引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。引用需要注意的特点:一个变量可取多个别名(引用)引用必须初始化(类型&amp;amp;amp;amp; 引用变量名=已定义的变量名)引用只能在初始化时引用一次,不能再引用其他变量int main(){ int a = 1; int &amp;amp;amp;amp;b = a; cout &am原创 2019-01-17 15:57:04 · 268 阅读 · 0 评论 -
C++入门
一、名字空间在c++语言程序代码中有一行这样的语句:using namespace std; c++引入名字空间的概念是要解决全局命名冲突的问题; 用关键字namespace+一个名字可以表示变量、函数、嵌套的集合,std表示标准c++库中所有组件的一个名字集合; 所以有了这句话就可以直接使用标准c++库中所有有成员; 如果没有这句语句,则要使用std::成员的方式来使用标准c++库成...原创 2018-10-19 21:06:52 · 373 阅读 · 0 评论 -
volatile的理解
一、如何理解呢?volatile可理解为防止编译器优化,保持内存可见性;即确保本条指令不会因编译器的优化而省略,且要求每次直接读值。相当于假设我程序中有一个变量被register修饰,建议编译器优化,则该变量将存储于寄存器中,程序执行效率更快;这时若加上volatile关键字修饰变量,则编译器将不会优化,直接从内存取值。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这...原创 2018-11-30 18:05:07 · 205 阅读 · 0 评论 -
内联函数
转自 https://blog.csdn.net/andrew_yau/article/details/7687356 在C++语言的设计中,内联函数的引入可以说完全是为了性能的考虑。因此在编写对性能要求比较高的C++程序时,非常有必要仔细考量内联函数的使用。 所谓“内联”,即将被调用函数的函数体代码直接地整个插入到该函数被调用处,而不是通过call语句进行...转载 2019-01-13 11:07:55 · 178 阅读 · 0 评论 -
结构体内存对齐与类内存对齐
为什么有内存对齐??? “内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上,便于编译器管理数据。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。对于内存对齐问题,主要存在于struct和union等复合结构在内存中的分布情况,许多实际的计算机系统对基本类型数据在内...原创 2019-01-13 14:25:58 · 575 阅读 · 0 评论 -
特殊字符和整数之间对应转换问题(LeetCode12 整数转罗马数字)
LeetCode12 整数转罗马数字罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。...原创 2019-05-19 14:23:10 · 527 阅读 · 0 评论