![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++知识总结
文章平均质量分 67
C++知识总结
小龙呮
这个作者很懒,什么都没留下…
展开
-
const关键字分析
目录C语言中修饰变量C语言中修饰指针变量C语言中修饰函数的参数C语言中修饰函数的返回值C++中修饰变量C++中修饰函数的参数C++中修饰函数的返回值C++中修饰类的成员函数C++中修饰类的成员变量C语言中修饰变量在C语言中,被const修饰的是一个不能被修改的变量。C语言中修饰指针变量#include <stdio.h>//代码1void test1(){ int n = 10; int m = 20; int *p = &n; *p = 20;//ok p =原创 2021-08-28 23:30:37 · 85 阅读 · 0 评论 -
【C++】多态介绍
文章目录0. 前言1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.4 override 和 final关键字2.5 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类3.1 概念3.2 接口继承和实现继承4. 多态的原理4.1 虚函数表4.2 多态的原理4.3 动态绑定与静态绑定5. 单继承和多继承关系中的虚函数表5.1 单继承中的虚函数表5.2 多继承中的虚函数表0. 前言需要声明的,本博客中的代码及解释都是在vs2013下的x86程序中,涉及的原创 2020-12-23 14:27:39 · 86 阅读 · 0 评论 -
【C++】继承介绍
文章目录0. 前言1. 继承的概念及定义1.1继承的概念1.2 继承的定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化1.3 总结2. 基类和派生类对象赋值转换3. 继承中的作用域4. 派生类的默认成员函数5. 继承与友元6. 继承与静态成员7. 菱形继承7.1 单继承7.2 多继承7.3 菱形继承8. 菱形虚拟继承8.1 虚拟继承可以解决菱形继承的二义性和数据冗余的问题8.2 虚拟继承解决数据冗余和二义性的原理9. 继承和组合0. 前言需要声明的,本博客中原创 2020-12-22 14:24:58 · 74 阅读 · 0 评论 -
【C++】IO流介绍
文章目录1. C语言的输入与输出2. 流是什么3. C++IO流3.1 C++标准IO流3.2 C++文件IO流4. stringstream的简单介绍1. C语言的输入与输出C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来进行输入与输出。对输入输出缓冲区的理解:可以屏蔽掉低级原创 2020-12-18 10:10:41 · 221 阅读 · 0 评论 -
【C++】模板分析(二)
文章目录1. 非类型模板参数2. 类模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化3. 模板的分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 解决方法4. 模板总结1. 非类型模板参数模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。namespace bite{原创 2020-12-18 10:09:06 · 58 阅读 · 0 评论 -
【STL】适配器:stack、queue和priority_queue的介绍和模拟实现
1. stack的介绍和使用1.1 stack的介绍2. queue的介绍和使用3. priority_queue的介绍和使用4. 容器适配器原创 2020-11-24 22:55:08 · 273 阅读 · 0 评论 -
【STL】容器:list的介绍和模拟实现
1. list的介绍及使用1.1 list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效原创 2020-11-20 15:18:41 · 104 阅读 · 0 评论 -
【STL】容器:vector的介绍和模拟实现
1. vector的介绍及使用1.1 vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,这是一个相对代价高的任原创 2020-11-18 21:53:04 · 126 阅读 · 2 评论 -
【STL】容器:string类的介绍和模拟实现
1. 标准库中的string类1.1 string类字符串是表示字符序列的类。标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char作为它的字符类型,使用它的默认char_traits和分配器类型。string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数。注意,这个原创 2020-11-16 22:47:41 · 1129 阅读 · 1 评论 -
【C++】模板分析(一)
1. 泛型编程如何实现一个通用的交换函数呢?void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; left = right; right = temp;}void Swap(char& left, char& r原创 2020-10-29 17:22:24 · 74 阅读 · 1 评论 -
【C++】C/C++的内存管理方式
1. C/C++内存分布int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof (int)* 4); int* pt原创 2020-10-20 21:26:39 · 361 阅读 · 0 评论 -
【C++】类与对象(三)—— 类的新玩法
1. 再谈构造函数1.1 构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;};虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为原创 2020-10-09 17:51:28 · 151 阅读 · 0 评论 -
【C++】类与对象(二)—— 类的默认成员函数
1. 类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。2. 构造函数概念class Date{public: void SetDate(int year, int month, int day) { _year = year; _month = month; _day = day; } void Display() { cout << _year原创 2020-09-14 22:31:35 · 433 阅读 · 0 评论 -
【C++】类与对象(一)—— 类的引入
1. 类的定义class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素称为类的成员:类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。class className{ // 类体:由成员函数和成员变量组成}; // 一定要注意后面的分号类的两种定义方式:声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。声明放在.h文件中,类的定义放在.cpp文件中。一原创 2020-09-02 21:22:58 · 393 阅读 · 0 评论 -
【C++】C++入门介绍
1. C++关键字(C++98)C++总计63个关键字,C语言32个关键字(C99)。2. 命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。2.1 命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{ }中即为命名空间的成员。//1.原创 2020-08-05 09:57:29 · 129 阅读 · 0 评论