![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
爱上冰激凌
临渊羡鱼不如退而结网
展开
-
论多态
多态的实现可以归结于———virtual关键字1、虚基表带有virtual关键字的class都有一个virtual table,该class的对象通常会带有一个vptr(virtual table ptr),该vptr决定了程序运行期间,各个virtual函数的调用情况。下面举一个例子说明base class和derive class的virtual函数的继承关系对应子类对象中的virtua...原创 2019-11-30 18:21:30 · 95 阅读 · 0 评论 -
老生常谈--C++构造函数类型
C++中老生常谈的基础是构造函数,申明一个空的class Empty,其实编译器会自动产生默认构造函数、析构构造函数、复制构造函数、赋值构造函数如下代码所示:class Empty{};定义上面的类,其实可以编译器会产生如下结构class Empty {public: Empty() ; //默认构造函数 ~Empty() ;//析构构造函数 Empty(cons...原创 2019-11-30 17:50:12 · 202 阅读 · 0 评论 -
c++面试知识点总结
STL容器篇C++面试基础中不可避免会问到STL容器相关知识点,STL容器包含两大类:序列式容器 & 关联容器序列式容器:元素都可序(ordered),但是未必有序(sorted),通过元素的顺序来访问,包含vector、list、dequeue、stack、queue、priority-queue。关联容器:数据以key-value的形式组成,可通过key值访问元素,包含RB-tr...原创 2019-10-28 22:21:14 · 348 阅读 · 0 评论 -
C++实现多线程单例
C++实现多线程单例C++实现多线程单例C++实现多线程单例#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&); \ TypeName& operator=(const TypeName&); #include <mutex>template <t...原创 2018-11-03 20:05:28 · 616 阅读 · 0 评论 -
单例设计
template<class T> class Singleton { public: static T& Instance() { static m_instance; return &m_instance; } Singleto...原创 2018-07-18 18:04:02 · 191 阅读 · 0 评论 -
C++基础回顾5——类的拷贝、复制和销毁
拷贝构造函数class Foo{ Foo(); //默认构造函数 Foo(const Foo&); //拷贝构造函数}拷贝构造函数的第一个参数必须是引用类型,在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。同样,当一个函数具有非引用的返回类型时,返回值会被用来初始化调用方法的结果。 因此,如果拷贝构造函数的参数不是引用类型,为了调用拷贝构造函数,我...原创 2018-06-06 01:41:42 · 316 阅读 · 0 评论 -
C++基础回顾4——动态数组
C++语言库提供两种一次分配一个对象数组的方法: 1.new表达式语法——分配内存和初始化一起 2.allocator类,分配和初始化分离。 int *pia = new int[42]; typedef int arrT[42]; int *p = new arrT; //初始化动态分配对象的数组 int *pia = new int[10]; ...原创 2018-06-06 00:44:17 · 440 阅读 · 0 评论 -
C++基础回顾4——智能指针shared_ptr
———-引入智能指针的目的,个人;理解有如下两点: 1.自动释放内存:智能指针类能记录多少个shared_ptr指向相同的对象,并在引用计数值为0时自动释放对象所占用的内存。 2.内存共享:让多个对象共享底层数据。C++动态内存(malloc &amp;amp; free, new &amp;amp; delete)程序使用动态内存出于以下三种原因之一:程序不知道自己需要使用多少对象程序不知道...原创 2018-06-04 23:55:09 · 190 阅读 · 0 评论 -
C++基础回顾2
IO库istream(输入流)类型,提供输入操作; ostream(输出流)类型,提供输出操作; cin:一个istream对象,从标准输入读取数据; cout:一个ostream对象,从标准输出读取数据; cerr:一个ostream对象,通常用于输出程序错误消息,写入到标准错误; “>>”:运算符,用来从一个istream对象读取数据; “<<...原创 2018-05-08 16:36:20 · 158 阅读 · 0 评论 -
C++基础回顾一
类的易忘特性:近期,翻看基础的《C++ Primer》,温故而知新,希望自己养成好习惯,在某一领域深耕耘,路漫漫而修远,吾将上下而求索。1.类的内联成员函数:在类中常有一些规模较小的函数适合于被声明成内联函数,定义在类内部的成员函数是自动inline的。2.可变数据成员-mutable 可变数据成员永远都不是const,即使它是const对象的成员。 class ...原创 2018-05-07 21:42:10 · 141 阅读 · 0 评论 -
C++基础回顾3——顺序容器
顺序容器概述vector:可变大小数组,支持快速随机访问,在尾部之外的位置插入或删除元素可能会变得很慢。deque:双端队列,支持快速访问,在头尾插入\删除速度很快list:双向列表,只支持双向顺序访问,在list中任何位置进行插入\删除操作速度都很快forward_list:单向链表,只支持单向顺序访问。在链表任何位置 进行插入\删除操作速度都很快array:固定大小数组,支持快速...原创 2018-05-10 23:09:21 · 192 阅读 · 0 评论 -
顶层Const和底层Const——函数重载
顶层Const和底层Const——函数重载Const指针的意义不希望改变指针的指向,这个指针指向的值不希望被改变。不希望改变这个指针所指向的值。int a = 4; int b = 5; int *const ptr = &a; ptr = &b; //错误,顶层指针,表示指针本身是个常量不准许改变const int* ptr = &b; *pt...原创 2018-05-02 23:40:08 · 1043 阅读 · 1 评论 -
C++之值传递和引用传递
值传递和引用传递值传递 当实参的值被拷贝给形参时,实参和形参是两个独立的变量,我们说实参被值传递或者函数被传值调用。- 普通形参 形参与实参独立,对形参的改变不会影响实参。 int i = 0; void change(int z) { z = 43; //i的值仍为0 } change(i);上述代码执行完毕后i的值仍是0;- 指针形...原创 2018-04-24 09:28:13 · 1318 阅读 · 0 评论 -
C++之虚析构函数
C++之虚析构函数用法:当且仅当类中包含一个以上的虚函数时才将析构函数设置为虚函数;无故将类的析构函数设置为虚函数会影响性能,因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。当类中包含纯虚函数时,该类为抽象类,具有作为基类的打算,若析构函数未申明为纯虚函数可能会造成内存泄漏。解决的问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象 鸡生蛋蛋生...原创 2018-04-12 20:19:09 · 189 阅读 · 0 评论 -
C++之RAII(Resource Acquisition Is Initialization)
转载:https://www.jianshu.com/p/b7ffe79498be什么是RAII?RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在...转载 2018-04-12 20:58:03 · 472 阅读 · 0 评论