![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
BugM
这个作者很懒,什么都没留下…
展开
-
中断和异常都是中断!
中断和异常很多时候,我们会在很多地方看到“中断”和“异常”两个概念,他们到底是指什么呢?他们之间有什么区别吗?“中断”和“异常”都是中断!中断(interrupt)通常被定义为一个事件,它可以让处理器停止当前的工作转而运行中断处理的相关程序。在物理上,中断其实就是CPU芯片内外部硬件电路产生的电信号。中断通常分为同步中断和异步中断:同步中断是cpu执行指令出现问题时由CPU控制单元产生的,因为是cpu内部产生的,所以也被称为内中断。之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断原创 2020-07-15 21:31:23 · 1055 阅读 · 1 评论 -
萃取
Traits 编程技法(萃取)不论是泛型思维还是STL的实际运用,迭代器都扮演着重要的角色。迭代器是一种行为类似指针的对象,在算法中运用迭代器时,很可能会用到其相关类型。其中的相关类型就包括迭代器所指的对象的类型。假设算法中有必要声明一个变量,其类型就是迭代器所指的对象的类型,但是输入参数却只有迭代器改怎么办?c++并没有支持typeof()!我们假设现在要实现一个算法func,其出入参数为迭代器void func(Iter iter){ //如果我们需要一个iter指向的类型的变量, //该原创 2020-06-22 21:12:07 · 134 阅读 · 0 评论 -
局部变量和全局变量,静态局部变量和静态全局变量,全局函数和静态函数
全局变量全局变量默认初始化为0,字符型变量为空字符’’定义在函数外,可被本文件及其他文件的函数使用(外部链接),其他文件使用时序用extern声明生命周期和程序运行周期一样不同文件的全局变量不可以重名局部变量如果没有赋初值,内容为随机如果定义在符合语句内,只在复合语句中有效同一文件中全局变量和局部变量可以同名,在局部变量作用域内,全局变量不起作用静态全局变量静态...原创 2020-04-03 13:38:33 · 543 阅读 · 0 评论 -
c++编译器会提供哪些默认构造函数?
1. 默认情况下,c++编译器至少为我们写的类增加3个函数:- 默认构造函数(无参,函数体为空)- 默认析构函数(无参,函数体为空)- 默认拷贝构造函数,对类中非静态成员属性进行简单的值拷贝2. 如果用户定义了拷贝构造函数,c++不会提供任何默认构造函数3. 如果用户定义了普通构造函数(非拷贝),c++不再提供默认无参构造,但是会提供默认拷贝构造...原创 2020-03-30 14:29:57 · 606 阅读 · 0 评论 -
c++操作符重载总结笔记
不能重载的运算符: . :: ?: sizeof前置++与后置++前置++ Object& operator++(){ a++; return *this; }后置++- Object operator++(int){ Object temp(*this); this->a++; return temp; }...原创 2020-03-30 14:17:35 · 114 阅读 · 0 评论 -
extern "C"的作用以及为什么要使用extern "C"
1. 实现c++代码能够调用其他c语言代码,加上extern "C"后,这部分代码编译器以c语言的方式进行编译和链接,而不是按c++方式2. 原因:c和c++对同一个函数经过编译后生成的函数名是不同的,由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函...原创 2020-03-30 14:09:07 · 1206 阅读 · 0 评论 -
c++之指向类成员的指针
1. 指向成员变量的指针 - 定义格式 § 数据类型 类名::*指针名 § 例如 int A::*pParam; - 赋值/初始化 § 数据类型 类名::*指针名 = &类名::非静态数据成员 § int A::*pParam = &A::param - 解引用 § <类对象名>.*<非静态数据成员指针> § <类对象指...原创 2020-03-30 14:05:52 · 257 阅读 · 0 评论 -
重载overload, 覆盖重写override,隐藏overwrite
1. 重载overload - 实现函数重载的条件: § 同一个作用域 § 参数个数不同 § 参数类型不同 § 参数顺序不同 § const也可以作为重载条件 - 返回值不作为函数重载的依据 - 函数重载和默认参数一起使用,需要额外注意二义性问题的产生 2. 覆盖重写override - 派生类函数覆盖重写基类虚函数: - 规则如下: § 不同的作用域(分别位...原创 2020-03-30 13:56:59 · 283 阅读 · 0 评论 -
TCP笔记之拥塞控制
TCP笔记之拥塞控制慢开始拥塞避免快重传快恢复拥塞控制示意图TCP的拥塞控制是为了防止过多的数据注入网络,使得网络中的路由器或者链路过载。TCP拥塞控制的四种算法分别为慢开始,拥塞避免,快重传,快恢复。慢开始TCP连接双方都维护了一个拥塞窗口和一个慢开始门限值,当tcp双方建立连接时,将拥塞窗口大小设置为1个数据段(1MSS)(Maximum Segment Size),随后包的每一次往返(...原创 2020-03-27 21:59:39 · 905 阅读 · 0 评论 -
条件变量的使用方法(笔记)
条件变量相关函数初始化一个条件变量#include <pthread.h>int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);常量初始化pthread_cond_t cond = PTHREAD_COND_INITIA...原创 2020-03-21 15:00:39 · 1162 阅读 · 0 评论 -
STL笔记之resize()和reserve()的区别
void resize(size_type n, value_type val = value_type());- 如果n<当前容器的size,则将元素减少到前n个,移除多余的元素(并销毁)- 如果n>当前容器的size,则在容器中追加元素,如果val指定了,则追加的元素为val的拷贝,否则,默认初始化- 如果n>当前容器容量,内存会自动重新分配void reserve...原创 2020-03-14 15:06:46 · 154 阅读 · 0 评论 -
内存分区(笔记)
内存分区内存分为四区:栈区,堆区,全局区或静态区,代码区代码区 - 存放CPU执行的机器指令,通常代码区是可共享的。代码区通常是制度的,程序运行期间不可修改 - 只读 - 程序在加载到内存前,代码区和全局区(包括data段和bss段)的大小就是固定的,程序运行期间不可改变全局区或静态区全局区或静态区可分为数据区和未初始化数据区数据区(data段) - 包含了程序中明确被初始化...原创 2020-03-12 17:33:48 · 141 阅读 · 0 评论 -
c++类的成员变量应该在哪里初始化?初始化列表,构造函数,类外还是类中?(笔记)
c++类的成员变量的初始化普通成员变量,在初始化列表中或者构造函数中初始化,不能在定义时初始化静态成员变量,必须在类外初始化引用变量必须在初始化列表中进行初始化const变量必须在初始化列表中进行初始化static const变量必须在类中定义时初始化...原创 2020-03-12 17:01:05 · 882 阅读 · 0 评论