![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c++学习
文章平均质量分 63
c++语言学习,偏八股
chuxuezhe8483
道阻且长、行则将至
展开
-
虚函数和多态
多态性学习笔记主要是来自B站视频懒猫老师-最简版C+±(12)虚函数与多态感谢老师的分享多态性:指不同类的对象对同一消息的不同响应子类对象地址赋给父类对象指针,一定要满足继承关系结果:用一种形式,实现不同的响应多态的实现原则:1、必须要有类的继承关系图 。在这个类的继承关系中,必须有要执行的操作的虚函数可以调用。(子类中不存在,可以调用父类中)2、基础类的指针指向子类。3、通过基础类的指针调用虚函数。调用上一级的动态绑定静态绑定的一个特点:编译时,可以预测结果动态绑定的一原创 2022-04-28 10:33:46 · 269 阅读 · 0 评论 -
C++ 面向对象高级开发(侯捷)
C++ 面向对象高级开发(侯捷)系统性的学习c++,笔记主要是听侯捷老师课做的C++ 编程简介C++ 演化书籍推荐:《effective C++》《stl 源码剖析》C vs C++ 关于数据和函数c 通过 type(built-in,struct)创建出变量C++ 通过 class,struct(包含成员和函数)创建出对象类的经典分类:带指针(复数)和不带指针(string)object based vs. object orientedObject based:面对单一 cla原创 2022-04-27 21:18:13 · 1867 阅读 · 0 评论 -
十大排序算法 c++实现
十大排序算法 c++实现冒泡排序/*冒泡排序比较相邻的元素,每次确定一个数的位置*/class BUbble{public: void mysort(vector<int> &nums){ int n = nums.size(); for(int i = 0;i < n;i ++){//比较次数 for(int j = 0;j < n - i - 1;j ++){//每趟只需要比较0....n -原创 2022-04-15 15:03:27 · 113 阅读 · 0 评论 -
STL详解
面试遇到过,发现自己只是算法中用到过,对这方面的内容却不怎么了解,补一下,多看几遍原博客:文章目录概述STL 六大组件简介三大组件介绍1. 容器2. 算法3. 迭代器常用容器1. string 容器string 容器基本概念string 容器常用操作2. vector 容器vector 容器基本概念vector 迭代器vector 的数据结构vector 常用 API 操作3. deque 容器deque 容器基本概念deque 容器转载 2022-04-14 20:18:49 · 89 阅读 · 0 评论 -
map、unordered_map、set、hash_set的比较
一、map内部实现机理map 内部实现了一个 红黑树(红黑树是非严格平衡二叉搜索树,而 AVL 是严格平衡二叉搜索树), 红黑树具有自动排序的功能,因此 map 内部的所有元素都是有序的,红黑树的每一个节点都代表着 map 的一个元素。因此,对于 map 进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。map 中的元素是按照二叉搜索树(又名二叉查找树、二叉排序树,特点就是左子树上所有节点的键值都小于根节点的键值,右子树所有节点的键值都大于根节点的键值)存储的,使用中序遍历可将键值按照从原创 2022-04-14 16:24:19 · 360 阅读 · 4 评论 -
auto_ptr作用
auto_ptr作用auto_ptr的出现,主要是为了解决“有异常抛出时发生内存泄漏”的问题;抛出异常,将导致指针p所指向的空间得不到释放而导致内存泄漏;auto_ptr构造时取得某个对象的控制权,在析构时释放该对象。我们实际上是创建一个auto_ptr类型的局部对象,该局部对象析构时,会将自身所拥有的指针空间释放,所以不会有内存泄漏;auto_ptr的构造函数是explicit,阻止了一般指针隐式转换为 auto_ptr的构造,所以不能直接将一般类型的指针赋值给auto_ptr类型的对象原创 2022-04-06 14:24:39 · 677 阅读 · 0 评论 -
c/c++的内存分配,详细说一下栈、堆、静态存储区?
c/c++的内存分配,详细说一下栈、堆、静态存储区?1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后原创 2022-04-06 10:00:42 · 827 阅读 · 0 评论 -
堆与栈的区别?
堆与栈的区别?管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可原创 2022-04-06 09:57:23 · 126 阅读 · 0 评论 -
虚函数、虚指针、虚函数表和多态
虚函数、虚指针、虚函数表和多态B站视频地址虚函数C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。虚函数表虚函数表作用对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被原创 2022-03-29 16:59:36 · 291 阅读 · 0 评论 -
C++中的左值、右值、左值引用、右值引用和移动语义
C++中的左值、右值、左值引用、右值引用和移动语义一、c++ 中的左值和右值误区:左值位于等号左边,右值位于等号右边。C++11 中的定义:左值表达式表示的是一个对象的身份(在内存中的位置),而右值表达式表示的是对象的值(内容)。左值和右值都是针对表达式而言的,左值是持久的,右值是短暂的:左值在表达式结束后仍然存在,右值在表达式结束后会被销毁。区分左值和右值的方法:看能不能进行取地址操作,若能,则为左值,否则为右值。注意:在需要右值的地方可以用左值来代替,但是不能把右值当成左值(也就是位置)使用原创 2022-03-29 14:14:14 · 927 阅读 · 0 评论 -
智能指针以及实现
智能指针以及实现智能指针概念:C++11中有unique_ptr、shared_ptr与weak_ptr等智能指针(smart pointer),定义在中。可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。防止内存泄露unique_ptrunique_ptr持有对对象的独有权,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义、只有移动语义来实现)。unique_ptr指针本身的生命周期:从unique_ptr指针创建时开始,直到离开作用原创 2022-03-29 13:27:08 · 182 阅读 · 0 评论