随笔分类 - C++
摘要:2020秋招提前批 C/C++相关开发 拿到 腾讯 、华为等offer 学习路线及时间安排 推荐时间为4个月,包括四部分:语言,计算机基础知识,项目基础知识,项目实践。 语言 推荐学习 1个月 学习方针:视频为主,书籍为辅。 配套视频:C语言,C++语言 C++ Primer Plus 集中学习该书
阅读全文
摘要:C语言实现单向循环链表,主要功能为空链表创建,链表初始化(头插法,尾插法),链表元素读取,按位置插入,(有序链表)按值插入,按位置删除,按值删除,清空链表,销毁链表。 单向循环链表和单向链表的区别:(1)单向链表为头指针,循环链表为尾指针,头指针指向头结点,尾指针指向终端结点;(2)为统一方便操作,
阅读全文
摘要:彻底理解链表中为何使用二级指针或者一级指针的引用 数据结构之链表-链表实现及常用操作(C++篇) C语言实现单链表,主要功能为空链表创建,链表初始化(头插法),链表元素读取,按位置插入,(有序链表)按值插入,按位置删除,按值删除,清空链表,销毁链表。 关键思路:(1)将结点创建结构体;(2)链表中添
阅读全文
摘要:C++回调函数(callback)与仿函数(functor)的异同 c++仿函数 functor C++仿函数和回调函数的异同
阅读全文
摘要:const放在函数后面 如果一个成员函数不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器将报错,这大大提高了程序的健壮性。 这里f函数其实有两个参数,第一个是A*const this, 另一个才是int类型的参数 如果我们不想f函数改
阅读全文
摘要:原生指针 泛型指针 智能指针 都是什么? iterator迭代器和指针的区别 C++标准模板库(STL)迭代器的原理与实现 【C++】STL常用容器总结之一:容器与迭代器 C++内置数组和array的比较 STL(Standard Template Library,标准模板库)六大组件:容器,算法,
阅读全文
摘要:C++ 异常机制分析 函数级try块 有关Function Try Block的法则 C++学习之构造函数中的异常处理 异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异常对象(主要针对类来说)。 1. 基本概述 首先try块试图运行代码,若该代码出现
阅读全文
摘要:C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast C强制转换 C语言中的强制转换主要用于普通数据类型、指针的强制转换,没有类型检查,转换不安全,语法为: C++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:st
阅读全文
摘要:函数模板 模板概念及语法 主要目的,简化代码,减少重复代码。基本语法格式: template<class T> 或者 template<typename T> //末尾不加分号 函数模板与普通函数 1.与类模板区别 template声明下面是函数定义,则为函数模板,否则为类模板。注意:每个函数模板前
阅读全文
摘要:为什么要进行内存对齐以及对齐规则 C/C++—— 内存字节对齐规则 C++内存字节对齐规则
阅读全文
摘要:深入理解指针类型间的转换 C++中指针的强制转换 强制类型转换(int)、(int&)和(int*)的区别 内存中的地址 地址的本质就是一串0和1的机器代码,内存中的地址没有明确数据类型,但地址值有类型,以32位编译器为例,内存中的地址是一个32位的整数。无论什么类型的指针变量,在内存中本质上都是一
阅读全文
摘要:深入剖析C++多态、VPTR指针、虚函数表 C++虚函数表分析 C++继承中重载、重写、重定义的区别: C++虚函数表剖析 C++获取虚表地址和虚函数地址时的两个强制类型转换 类型兼容性原则 类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中
阅读全文
摘要:继承引出 继承主要是为了减少代码的重复内容,解决代码复用问题。通过抽象出一个基类(父类),将重复代码写到基类中,在派生类(子类)中实现不同的方法。 语法: class 子类:继承方式 父类 继承方式 继承方式有公有继承,私有继承,保护继承。 (1)公有继承:保持父类中的访问属性; (2)私有继承:将
阅读全文
摘要:一、基本属性 (1)运算符重载的目的是扩展C++中提供的运算符的适用范围,使之能作用于对象,或自定义的数据类型; (2)运算符重载的实质是函数重载,可以重载为普通成员函数,也可以重载为成员函数; (3)运算符重载也是多态的一种,和函数重载称为静态多态,表示函数地址早绑定,在编译阶段就确定好了地址;
阅读全文
摘要:友元主要是为了访问类中的私有成员(包括属性和方法),可以分为友元函数(全局函数),友元类,友元成员函数。 全局函数做友元函数 友元函数是可以直接访问类的私有成员。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时在函数名称前加上关键字friend,其格式如下: friend
阅读全文
摘要:this指针引入 类中对象的成员变量和成员函数是分开存储的,sizeof(空class) = 1,另外示例中涉及到字节对齐的问题,double本身的字节为8,int为4,由于字节对齐,int也为8,所以最终字节数为16 非静态成员变量才属于对象本身,静态成员变量、函数、非静态成员函数(非内联)不属于
阅读全文
摘要:若将成员变量声明为static,则为静态成员变量,与一般的成员变量不同,无论建立多少对象,都只有一个静态成员变量的拷贝,静态成员变量属于一个类,所有对象共享。静态变量在编译阶段就分配了空间,对象还没创建时就已经分配了空间,放到全局静态区。 静态成员变量 注意事项:(1)最好是类内声明,类外初始化(以
阅读全文
摘要:细说new与malloc的10点区别 C++ 自由存储区是否等价于堆? 浅谈new/delete和malloc/free的用法与区别 new和malloc都是在对上开辟内存,但尽量使用new。 使用malloc的注意事项:(1)程序猿必须实现确定对象的长度;(2)malloc返回一个void*指针,
阅读全文
摘要:构造函数和析构函数,分别对应变量的初始化和清理,变量没有初始化,使用后果未知;没有清理,则会内存管理出现安全问题。 构造函数和析构函数写法 构造函数:与类名相同,没有返回值,不写void,可以发生重载,可以有参数,编译器自动调用,只调用一次。 析构函数:~类名,没有返回值,不写void,不可以发生重
阅读全文
摘要:内联函数 宏可以避免函数调用带来的开销,但存在两个问题:1)宏没有作用域,没有类型检测,另外定义宏时,需要时刻注意加括号,除此之外,当传入变量自增时,会出现不可避免的错误。2)C++中宏不能作为类的成员函数,因为预处理器不能访问类成员。 内联函数主要为了替代宏,另外,类中的成员函数默认加了inlin
阅读全文

浙公网安备 33010602011771号