![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++基础学习笔记
文章平均质量分 64
C++基础学习笔记
rainboots
这个作者很懒,什么都没留下…
展开
-
函数模板与模板函数、类模板、类型转换
今日学习:C++进阶day2部分函数模板与模板函数类型参数化,编写代码可以忽略类型template<class T>template<typename T>template只对下面的第一个函数有效1.自动类型推导Myswap(a,b);编译器根据你传的的值,进行类型自动推导2.显式指定类型Myswap<int>(a,b);函数模板不能进行自动类型转换,必须严格类型匹配函数模板和普通函数在一起调用规则:函数模板可原创 2021-08-06 21:48:50 · 368 阅读 · 0 评论 -
回调函数(待补充
今日学习:回调函数的优点:1.函数的调用和函数的实现 有效的分离2.类似C++的多态,可扩展回调函数的本质:提前做了一个协议的约定(把函数的参数,函数返回值提前约定)原创 2021-09-07 10:51:24 · 65 阅读 · 0 评论 -
this指针、友元、重载规则
今日学习:privatethis指针不是const Test *this指针是一个常指针,Test *const成员函数尾部出现const 修饰的是this指针如果想返回一个对象的本身,在成员方法中用 *this 返回如果想对一个对象连续调用成员方法,每次都会改变对象本身,成员方法需要返回引用。友元如果一个全局函数经常访问类的私有成员,压栈出栈的开销会很大,可以声明为友元函数,便于访问类的私有成员但它破坏了类的封装性和隐藏性友元关系是单向的,不具有交换性友元...原创 2021-08-02 20:45:51 · 65 阅读 · 0 评论 -
C++设计模式
设计原则1.开闭原则。一个软件实体,如类,模块和函数应该对外扩展开发,对内修改关闭。解读:用抽象构建框架,用实现扩展细节。不以改动原有类的方式来实现新需求,而是应该以实现事先抽象出来的接口(或具体类继承抽象类)的方式来实现。优点:开闭原则的优点在于可以在不改动原有代码的前提下给程序扩展功能。增加了程序的可扩展性,同时也降低了程序的维护成本。2.单一职责原则。一个类只允许有一个职责,即只有一个导致该类变更的原因。解读:类职责的变化往往就是导致类变化的原因:也就是说如果一个类具有多种原创 2021-09-15 00:13:43 · 243 阅读 · 0 评论 -
宏定义、大小端、const、static
今日计划:看阿秀八股到35宏定义宏定义是比较常用的预处理指令,即使用“标识符”来表示“替换列表”中的内容。宏定义不是语句,是预处理指令,故结尾不加分号。当替换列表一行写不下时,可以使用反斜线\作为续行符延续到下一行#define PI 3.1416 //正确,该行#前允许有空格int a;#define N 5 //错误,该行#前不允许有空格外的其他字符删除宏定义的格式为:#undef 标识符标识符与参数表的左括号之间不能有空格,否则预处理器会把该宏理解为普通的无参宏定义.原创 2021-07-29 14:37:27 · 201 阅读 · 0 评论 -
智能指针、悬垂指针、继承方式、头文件
今日学习:C++基础day5、day6一半const地址不能由普通指针接收将一个对象,当成一个普通函数来调用,称这种对象是仿函数、伪函数void * 万能指针不建议重载 && || 操作符,不会发生短路现象智能指针头文件 #include<memory>智能指针不需要手动释放,会自动回收智能#include<iostream>#include<memory>using namespace std;in..原创 2021-08-04 21:13:18 · 623 阅读 · 1 评论 -
标准输入、输出、STL标准库(待补充、守护进程
今日学习:标准输入、标准输出:键盘输入、输出到显示器cerr: 标准错误,输出数据到显示器 clog: 标准日志,输出数据到显示器cerr没有缓冲区,clog有缓冲区//标准输入流char ch1;ch1=cin.get();char ch2;cin.get(ch2); //读取一个字符char buf[256]={0};cin.get(buf,256); //从缓冲区读一个字符串cin.getline(buf,256); //...原创 2021-08-10 19:55:09 · 73 阅读 · 0 评论 -
默认构造函数、
今日学习:C++基础 day3 #if 0 ......... #endif可以用来屏蔽大段代码,解决嵌套注释#if 0的本质作用是删除代码,在成熟的版本管理下,直接删除就行了,留下一堆#if 0会让代码显得臃肿,Makefile也无法控制其开关。 而#if XXX表明其内部代码是有明确意义的,很多时候还可以通过Makefile进行控制,所以可以保留。 另外也可以看到,几乎所有的开源项目,都不会有#if 0代码,但是#if XXX这种非常多。#if 0只有本地调试时可以用。..原创 2021-07-31 20:36:30 · 70 阅读 · 0 评论 -
多态发生的三个条件、多继承、虚函数表
今日学习:多继承将父类继承爷爷类,改成虚继承,防止儿子在多继承父类,出现爷爷类中的变量会拷贝多份多态发生的三个必要条件:1.要有继承2.要有虚函数重写3.父类指针或引用指向子类对象 (简单赋值是不行的多态对于编译器来说是动态联编如果一个类有virtual虚函数关键字,在编译器给这个对象开辟空间的时候,会默认增加一个指针vptr。vptr指向虚函数表如果调用一个普通函数,编译器不会查找虚函数表只有调用的函数,是虚函数的时候,才会去查找虚函数表vptr分步初始化...原创 2021-08-04 22:02:41 · 110 阅读 · 0 评论 -
C++11中的新特性
C++11中的新特性文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结一、基于范围的for循环C++ 11提供了一个特殊版本的 for 循环,在很多情况下,它都可以简化数组的处理,这就是基于范围的 for 循环。在使用基于范围的 for 循环处理数组时,该循环可以自动为数组中的每个元素迭代一次。不必使用计数器变量控制其迭代,也不必担心数组下标越界的问题。基于范围的 for 循环使用了一个称为范围...原创 2021-09-25 22:25:55 · 463 阅读 · 0 评论 -
C++中string详解与用法
C++string中的insert()函数用法详解C++string中的insert()插入函数basic_string& insert (size_type pos, const basic_string& str);在原串下标为pos的字符前插入字符串strbasic_string& insert (size_type pos, const basic_string& str, size_type pos1, size_type n);str从下标为pos1开始原创 2021-08-19 23:47:18 · 10775 阅读 · 4 评论 -
strcpy、memset、memcpy、memmove用法
strcpy函数原型 char *strcpy(char *dest,const char *src)strcpy的实现代码 char * strcpy(char * strDest,const char * strSrc) { if ((strDest==NULL)||(strSrc==NULL)) throw "Invalid argument(s)"; ..原创 2021-07-31 21:46:48 · 260 阅读 · 0 评论 -
C++ 《STL 之 vector 学习笔记》
Vector 容器:vector类称作向量类,它实现了动态的数组,用于元素数量变化的对象数组。构造函数:vector():创建一个空的vector。vector(itn nSize):创建一个vector,元素个数为nSize。vector(int nSize, const T& t):创建一个vector,元素个数为nSize,且值均为t。vector(const vector&):拷贝构造函数。vector<int>a,b(n,0)的意思就是 创建了一个 int 类型原创 2021-05-22 11:01:50 · 217 阅读 · 0 评论 -
C++ 《STL 之 map 学习笔记》
map与unordered_map的区别内部实现机理:map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。unordered_map: unordered_map内部实现了一个哈希表,因此其元素的排列顺序是杂乱的,无序的总结:内存占有率的问题就转化成红黑树 VS hash表 , 还是un原创 2021-05-21 19:26:51 · 247 阅读 · 0 评论 -
构造函数
构造方法是一种特殊的方法,它是一个与类同名的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。构造方法是一种特殊的成员方法,它的特殊性反映在如下几个方面:1.构造方法作用:(1).构造出来一个类的实例 (2).对构造出来个一个类的实例(对象)初始化。2.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。3.主要完成对象的初始化工作,构造方法的调用是在创建一个对象时使用ne原创 2021-05-17 21:00:44 · 187 阅读 · 0 评论 -
extern声明变量
目录extern的两种用法:1.在一个文件内声明全局变量2. 在多文件的程序中声明外部变量声明变量和定义变量的区别:extern的两种用法:1.在一个文件内声明全局变量如果全局变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern对该变量作全局变量声明,表示该变量是一个将在下面定义的全局变量。有了此声明,就可以从声明处起,合法地引用该全局变量,这种声明称为提前引用声明。一般都把全局.原创 2021-05-16 10:42:42 · 1432 阅读 · 0 评论 -
C/C++内存分区
一个由C++编译的程序占用的内存分为以下几个部分1.栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 2.堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。3.自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。4.全局/静...原创 2021-04-28 17:01:00 · 128 阅读 · 0 评论 -
虚函数与纯虚函数
定义一个函数为虚函数,不代表函数为不被实现的函数。虚函数是为了允许用基类的指针来调用子类的这个函数。虚函数用来实现C++的多态性(polymorphism)。当基类的指针指向派生类实例时,可以用基类指针调用派生类中的成员函数。如果基类指针指向不同的派生类,则该指针可以调用同一个函数实现不同的逻辑。这种机制可以让基类指针具有多种形态。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。纯虚函数是在基类中声明...原创 2021-04-27 21:09:27 · 669 阅读 · 0 评论