c++基础
文章平均质量分 66
淡蓝色的经典
这个作者很懒,什么都没留下…
展开
-
C++11多线程之条件变量
原因分析:并不是一运行就会出现这种情况,当出现图片中的这种情况的时候,原因是当两个互斥锁同时运行时,锁一被占用后,还没有释放锁的时候,锁二就继续占用锁一,出现了相互引用的情况,导致了死锁的出现。当wait状态执行到第二步时候,此时主线程获得锁,主线程向下执行,将tag的值变为true,此时再次到子线程,此时子线程向下执行,wait执行三、四步骤后,再次调用唤醒函数,主线程执行后续步骤。例题一:ABC三个线程分别打印出来ABC。例题三:A线程打印偶数,B线程打印奇数。甲向乙进行转账的同时,乙向甲进行转账。原创 2023-06-15 17:21:45 · 852 阅读 · 1 评论 -
C++11之多线程
可能的结果为:10,100,100,200 或者10,200,200,100或者10,10,100,200等。可能的结果为:10,100,100,200 或者10,200,200,100或者10,10,100,200等。主线程不会等待子线程结束,如果主线程运行结束,程序结束。检查当前线程是否处于活跃状态。原创 2023-06-11 02:20:24 · 156 阅读 · 0 评论 -
C++11之异常处理
注释:代码来自图论教育。原创 2023-06-04 20:31:25 · 732 阅读 · 0 评论 -
C++四种类型转化
该运算符把expression转化为type_name类型,static_cast在编译时使用类型信息执行转换,在转换执行必要时的检测(如指针越界,类型检查),但没有运行时类型检查来保证转换的安全性。2.如果针对指针类型的dynamic_cast失败,则dynamic_cast的结果是nullptr。1.与C++支持其他强制转化的不同的是,dynamic_cast是在运行时执行的动态类型转换。4.在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的。原创 2023-05-27 23:11:05 · 621 阅读 · 0 评论 -
C++之设计模式
一个小女孩过生日,问爸爸要生日礼物,爸爸没给,然后继续问妈妈要,妈妈也没给,继续问爷爷要,爷爷也没给,直到问奶奶要,奶奶把生日礼物给她了。例题:井底下有一只青蛙,一位小女孩和青蛙kiss之后,青蛙变为了王子,如果小女孩不情愿,则青蛙变为小狗。以空格为界限,求单词的个数。原创 2023-05-16 00:28:10 · 75 阅读 · 0 评论 -
C++之构造函数与虚析构函数
1.虚函数调用只需要“部分的信息”,即只需要知道函数的接口(函数返回类型,函数名,参数列表),而。根据赋值兼容性规则,可以用基类的指针指向派生类的对象,如果使用基类指针指向。派生类的对象,由该基类指针撤销派生类对象,则必须将析构函数设置为虚函数。如果你调用一个虚构造函数,编译器不知道你要构造的继承树上的那种类型。原创 2023-05-15 12:08:17 · 385 阅读 · 0 评论 -
STL容器之deque
deque是“double-ended queue”的缩写,和vector一样都是STL的容器deque是双端数组,而vector是单端的deque在接口上和vector非常相似,在许多操作的地方都可以直接替换deque可以随机存取元素(支持索引直接存取,用 []操作符或at()方法)deque头部添加或移除元素都非常快,但是在中部插入删除元素比较费时在实际应用中,如果频繁的对头部操作,才用到deque。原创 2023-05-14 19:31:45 · 438 阅读 · 0 评论 -
STL之迭代器
迭代器是一种检查容器内元素并且遍历容器内匀速的数据类型。原创 2023-05-14 19:11:08 · 379 阅读 · 0 评论 -
C++多态练习题
引发了异常,原因是将对象赋值给空间,系统只负责将数据赋值,不进行虚函数指针的赋值,也就是说虚表指针仍然是随机值,解决方法一:去掉虚函数。4.[edx+8],edx代表虚表里面的首地址add函数,+8就是指针偏移8字节,此时指向的print函数,并将print函数给eax。此时我们发现base并没有被析构掉,造成内存泄露,解决办法是将Object的析构函数设置为虚函数。3.op所指之物给ecx(test的this指针执向了vptr),并将vptr的地址给了ecx。解决办法二:定位new。原创 2023-05-14 01:10:56 · 1030 阅读 · 0 评论 -
C++之多态与虚函数
函数的重写,函数参数,函数名,函数返回类型必须相同(函数重写是同名覆盖的一种特殊情况)总结:运行时多态性,公有继承+虚函数+(指针或引用调用虚函数)函数的重写:(同名覆盖)原创 2023-05-08 23:26:33 · 483 阅读 · 0 评论 -
C++之初识STL—vector
尾部插入速度比较快vector是将元素置于一个动态数组中加以管理的容器vector可以随机存取元素(支持索引值直接存取)vector尾部添加或移除元素的速度非常快速,但是在头部插入或移除元素比较费时。原创 2023-05-07 19:54:48 · 483 阅读 · 0 评论 -
C++之单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。原创 2023-05-07 00:44:53 · 511 阅读 · 0 评论 -
多重继承与派生类成员标识
由多个基类共同派生出新的派生类,这样的继承结构称为多重继承。一个派生类只有一个直接基类的情况称为单一继承。菱形继承是多重继承一种特殊情况。原创 2023-05-06 18:10:19 · 58 阅读 · 0 评论 -
C++之继承与友元和静态成员
公有继承,父类细节子类可见,其代码属于白盒式的复用,意味着当设计学生这个对象时,学生这个对象也可以调用父类里面的成员方法。尽可能使用组合,必须是使用私有继承,有保护属性和虚函数介入时考虑私有继承。对象之间的内部细节不可见,其代码属于黑盒复用方式。多重继承:由多个基类共同派生出新的派生类,这样的继承结构被称为多重继承。单一继承:一个派生类只有一个直接基类的情况称为单一继承。公有继承和组合都是代码复用的方式。私有继承和组合如何选择?公有继承:是一个的概念。私有继承:有一个的概念。原创 2023-04-28 15:21:08 · 113 阅读 · 0 评论 -
c++11智能指针之基础概念
1.内存泄漏:内存泄漏是指程序中已动态分配的堆内存由于某种原因因程序未释放或无法释放,导致程序运行速度减慢甚至系统崩溃等。由于c++语言没有垃圾回收机制,必须自己去释放动态分配的堆内存,否则就回内存泄漏,解决这个问题就是使用智能指针。,用于生存期的控制,能够确保智能指针对象离开所在作用域是,自动正确的销毁动态创建的对象。例如:文件的拷贝,即使是深拷贝,但是他们依然在同一个文件里面“a.txt”//对象语义指的是面向对象意义下的对象,对象拷贝是禁止的。8.auto_ptr的拷贝构造函数的问题。原创 2023-04-25 23:57:12 · 420 阅读 · 0 评论 -
c++之继承与缺省函数
补充:切片现象,派生类对象赋值给基类对象时,会产生切片现象。设计一个不能不继承的类,但是可以在外部环境创建该类的对象。1.构造函数、拷贝构造、赋值重载、析构函数不能够被继承。设计一个能被继承的类,但是不能在外部环境创建该类的对象。设计一个类型,在外部环境中不能创建该类的对象。方法二:使用final关键字 C11新标准。主要目的:将对象创建出来。设计一个不能被继承的类。原创 2023-04-25 19:27:26 · 668 阅读 · 0 评论 -
C++柔性数组实现Mystring
写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减为0时才真的释放掉这块空间。当有的指针要改变这块空间的值时,再为这个指针分配自己的空间(注意这时引用计数的变化,旧的空间的引用计数减一,新分配的空间引用计数加一。柔性数组:柔性数组是一种数组大小待定的数组。在c语言中,可以使用结构体产生柔性数组,结构体的最后一个元素可以是大小未知的数组。原创 2023-04-25 01:02:02 · 75 阅读 · 0 评论 -
c++之常见函数
然后c语言名字修饰非常简单,__cdecl是C/C++的缺省调用方式,调用约定函数名字前面加了下划线前缀。thiscall:仅仅适用于“C++”类的成员函数,this指针存放在ECX寄存器中,参数从右到左压。__fastcall:快速调用约定,函数从右到左的压栈方式,速度快,通过寄存器传入参数。1.当进行函数的调用时,系统要建立栈空间,保护现场,传递参数等等,这些工作都需要系统。__stdcall:回调调用约定,函数从右到左的压栈方式,自己在退出时清空堆栈。函数重载的定义:函数名相同,参数类型和个数不同。原创 2023-04-23 20:43:28 · 1156 阅读 · 0 评论 -
c++基础入门二
对指针变量的操作,会使指针变量指向下一个实体(变量或对象)的地址,而不是改变所指实体(变量或对象)的内容。当函数执行调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作主要系统时间和空间的开销。指针变量的值可以发生改变,存储不同实例的地址,引用在定义的时候就被初始化,之后无法改变(不能是其他实例的引用)。对指针变量使用“sizeof”得到的是指针变量的大小,对引用变量使用“sizeof”得到的是变量的大小。指针变量存储某个实例(变量或对象)的地址,引用是某个实例的别名。原创 2023-02-09 17:42:47 · 483 阅读 · 0 评论 -
c++之基础入门一
const只在编译期有用,在运行期无用(编译的时候只能替换数值,不能确定地址。关于const修饰限定的作用:c++const修饰限定的作用基本上与c++相同,C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值。const可以进行能力的收缩,但是不能进行及能力的扩张。所以在c编译器上和c++编译器上面我们会发现值的不同。const修饰的变量是只读的,本质还是变量。const修饰的全局变量在只读存储区分配空间。const 修饰的局部变量在栈上分配空间。c语言中的const。原创 2023-02-03 16:57:36 · 1116 阅读 · 0 评论