C++
文章平均质量分 56
青布衫白少年
这个作者很懒,什么都没留下…
展开
-
腾讯云区域研发后端一二面面经
作者:董小姐手中的兰州链接:https://www.nowcoder.com/discuss/560011?toCommentId=8080356来源:牛客网问的比较基础70min操作系统:进程 线程的区别与联系 进程线程共享的资源程序运行的虚拟内存划分临界区锁(普通锁和读写锁的区别)new开辟的位置C++:智能指针(区别,作用)面向对象的含义STLnew和malloc数据库:数据库的基本操作引擎B树和B+树的区别为什么范围...原创 2020-11-10 15:01:55 · 857 阅读 · 0 评论 -
C++(18)——设计模式:工厂模式和观察者模式
设计一个不能被继承的类1、单例模式2、虚继承class A;class B{public: friend class A;private: B(){}};class A : virtual public B{public: A() {}};class C : public A{public: C(){}};class A 是B的friend,所以A可以调用B的构造函数。因为A虚继承了B,所有继承A的子类,都必须自己实例化B,以保证B在对象中的唯一性。所以,C继承A原创 2020-08-15 11:47:58 · 203 阅读 · 0 评论 -
C++(17)——泛型算法绑定器和智能指针
泛型算法将用代码和注释进行讲解/*泛型算法特点一、泛型算法的参数接受的都是迭代器特点二、泛型算法还可以接受函数对象绑定器 + 二元函数对象 =》一元函数对象bind1st:把二元函数对象的operator的第一个形参绑定起来bind2nd:把二元函数对象的operator的第二个形参绑定起来取反器not1 一元函数取反not2 二元函数取反*/int main(){ int arr[] = { 12,644,9,11,16,116,49,79,64 }; vector&l原创 2020-08-14 21:29:07 · 411 阅读 · 0 评论 -
C++(16)——迭代器和函数对象
迭代器所有迭代器都有*和++运算符的重载函数,甚至可能什么都不做const_iterator常量正向迭代器iterator正向迭代器reverse_iterator反向迭代器const_reverse_iterator常量反向迭代器back_insert_iterator 后插型迭代器front_insert_iterator 前插型迭代器insert_iterator 插入型迭代器Bidirectional iterator双向迭代器istream_iterator 输入流迭代器os原创 2020-08-14 18:57:24 · 277 阅读 · 0 评论 -
C++(15)——关联容器和海量数据查重
关联容器关联容器也是用来存放数据的,但是和顺序容器有很大的区别。关联容器的底层数据结构是红黑树分类有序关联容set:单集合容器multiset:多集合容器map:单映射容器multimap:多重映射容器无序关联容器unordered_set 单重集合unordered_multiset 多重集合unordered_map 单重映射表unordered_multimap 多重映射表方法find查找函数:二分查找count函数:返回容器中值为x的元素个数clear函数:清空容器原创 2020-08-14 18:48:08 · 305 阅读 · 0 评论 -
C++(14)——顺序容器和容器适配器
C++ STL 标准模板库一、标准容器vector 向量容器deque 双端链表容器list 链表容器二、容器适配器底层通过标准容器实现,但是对外部提供不同功能的接口stack 栈queue 队列priority_queue 优先队列三、关联容器无序关联容器 链式哈希表o(1)unordered_set 无序单重集合unordered_multiset 无序多重集合unordered_map 无序的单重映射表unordered_multimap 无序分多重映射表有序关联容原创 2020-08-14 12:15:07 · 247 阅读 · 0 评论 -
C++(13)——虚基类和C++四种类型转换
继承方式1、单继承(一个派生类只有一个直接基类)2、多继承(派生类有两个或以上的直接基类)3、菱形继承虚基类virtual修饰成员方法时叫虚函数,virtual修饰修饰继承方式时叫虚继承。class A{public:private: int ma;};class B:virtual public A**加粗样式**{public:private: int mb;};有虚基类的内存存储:当有虚继承的时候,基类的数据放到代码的最后面,在派生类数据前面加一个指向虚基类表原创 2020-08-13 16:54:04 · 378 阅读 · 0 评论 -
C++(12)——多态
多态多态的概念:统一接口,不同的响应方式。多态分为静多态(函数重载)和动多态(动态绑定)所谓静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程称之为静态绑定。动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法动多态是用虚函数实现的(动态绑定)class Base{public: Base(){} virtual void show(){cout<<"Base::show"<<endl;}原创 2020-08-13 12:53:36 · 144 阅读 · 0 评论 -
C++(11)——继承和派生
继承继承可以用一句话概括:继承的本质就是代码复用类与类之间的关系是组合继承。继承方式总结:1、外部只能访问对象public的成员,protected和private的成员无法直接访问;2、在继承结构中,派生类从基类继承过来的private的成员,但是派生类无法直接访问3、protecte和private的区别?在基类中定义的成员,想被派生类访问,但是不想被外部访问,那么在基类中,把相关成员定义成protected保护的;如果派生类和外部都不打算访问,那么在基类中,把相关成员定义成priva原创 2020-08-12 20:17:14 · 358 阅读 · 0 评论 -
C++(11)——再谈new和delete/内存池
再回顾一下new和malloc的区别(重点!!!面试必问)new和malloc 的区别1、malloc的返回值不安全需要进行类型转换,而new不需要。2、new是一个关键字、malloc是一个函数3、malloc需要用户输入开辟内存的字节大小,呢问,不需要计算开辟内存的大小。4、new开辟内存失败抛出bad_alloc异常,malloc开辟内存失败返回空指针5、malloc在堆上开辟内存,new开辟的空间叫做自由存储区。6、malloc只能开辟空间不负责初始化,new不仅可以开辟空间还可以初始原创 2020-08-12 13:56:29 · 349 阅读 · 0 评论 -
C++(10)——实现复数类和String类
复数类class CComplex{public: CComplex(int r = 0, int z = 0) :a(r),b(z) { } ~CComplex() { } CComplex operator+(const CComplex &com) { return CComplex(this->a + com.a,this->b + com.b); } void show() { cout << "实部:" <<原创 2020-08-12 13:52:11 · 308 阅读 · 0 评论 -
C++(9)——浅谈迭代器失效问题
迭代器是我们遍历容器的利器没在后面还会引入各种迭代器及其他作用我们先来实现一个简单的迭代器//迭代器一般实现为容器的嵌套类型//将这个类插入到之前写好的vector容器中 class iterator { public: friend class vector<T, Alloc>;//声明称友元类 iterator(vector<T,Alloc>*pvec,T *ptr = nullptr) :_pVec(pvec), _ptr(ptr) { _p原创 2020-08-12 13:32:42 · 319 阅读 · 0 评论 -
C++(8)——容器的空间配置器allocator
在上一个博客中我们用模板类实现了vector向量容器,但是向量容器存在一个问题我们来看看class Test{public: Test() { cout << "Test" << endl; }; ~Test() { cout << "~Test" << endl; };};int main(){ vector<Test> vec1; return 0;}但是输出结果缺如下,因为new 的时候会自动调用Test的构造函原创 2020-08-11 19:02:00 · 208 阅读 · 0 评论 -
C++(7)——函数模板和类模板
函数模板模板是实现代码重用机制的一种工具,它可以实现类型参数化, 即把类型定义为参数,从而实现了真正的代码可重用性。模板可以分为两类:一个是函数模板,一个是类模板。函数模板<>内是函数模板参数列表模板实例化:在调用点用具体类型替换虚假类型没有模板的实例化,模板中的错误无法发现函数模板不编译(永远不编译)函数模板的编译1、定义点 编译模板的头部2、调用点 编译模板实例化后的产物 ==》模板函数才是要被编译器所编译的模板的实参推演=》可以根据用户传入的实参类型,来推导出模板类型参原创 2020-08-11 16:39:00 · 329 阅读 · 0 评论 -
C++(6)——static和单例模式
static关键字之前在C的面经总结中有对static进行详细介绍,就不多介绍了,今天我们重点来介绍C++中static用法。在类中,普通的成员方法在调用的时候编译器会自动添加一个this形参变量普通成员方法的特点:1、属于类的作用域2、调用该方法时需要依赖一个对象3、可以任意访问类的私有成员变量在成员变量前面加上static后,这个成员变量就是静态的成员变量静态的成员变量在类内只是一个声明一定要在类外进行定义和初始化(重点)静态成员变量不属于对象,而是属于类级别在成员方法前面加上st原创 2020-08-10 19:23:02 · 1203 阅读 · 0 评论 -
C++(5)——new和浅拷贝问题
前几天面试宁波银行的时候面试官问:C和C++的区别是什么?什么是OOP?靓仔语塞。。。。C是面向过程的语言,C++是面向对象的语言OOP(面向对象(工资)编程) OOD(面向对象的设计),OOA(面向对象的分析)举个最简单点的例子来区分 面向过程和面向对象有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择1、你要自己去准备原材料。2、去饭店!看出来区别了吗?这就是1是面向过程,2是面向对象。面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的。如果你突然不想吃鱼香肉丝了,想吃别的菜,对于1原创 2020-08-10 18:29:44 · 407 阅读 · 0 评论 -
C++(4)——函数重载和const修饰的指针、引用
函数重载C++三大特性:封装继承多态。今天说说是静态的多态——函数重载我们先来看一段程序int sum(int a,int b){ return a + b;}int sum1(double a,double b){ return a + b;}int main(){ int a = 10, a1 = 10; int b = 10.0, b1 = 10.3; int sum = sum(a,a1); cout<<sum<<endl; sum = su原创 2020-08-10 16:22:01 · 291 阅读 · 0 评论 -
C++(3)——形参带默认值的函数和内联函数
形参带默认值的函数形参带默认值得函数,在调用的时候可以不用传参数class base{public: base(int a = 0) { b = a; }private: int b;}int main(){//形参带默认值得函数用以下两种方式调用构造函数均可 base A(10); base B; return 0;}以上是一种参数的情况,当参数有两个及以上的时候给默认值的时候必须从右往左给无论是在定义的时候或者声明的时候都可以给定形参的默认值,且形参的默认值原创 2020-08-10 14:24:20 · 238 阅读 · 0 评论