
c++
文章平均质量分 89
c++相关内容的一些学习和分享
勇794
这个作者很懒,什么都没留下…
展开
-
string类模拟实现
调整字符串的大小,将字符串调整为大小为n的字符串,如果n小于_size,那么就把_size的大小改为n,如果n大于_size,那么也把_size调整为n,后面扩大的位置上的字符初始化为ch。这个错误就是因为我们使用的默认拷贝构造函数是浅拷贝,浅拷贝是按字节拷贝,拷贝完之后,s2和s1公用同一块空间,而当s2析构之后空间已经被释放,当s1再要去访问时就出错了。析构之后,s1中的_str空间释放了,同时也被置成了空指针,_size和_capacity也被改成了0,所以这里的析构函数也是没有任何问题。原创 2023-02-28 22:13:19 · 102 阅读 · 0 评论 -
C++内存管理
动态申请的内存,不使用了,又没有主动释放,就存在内存泄漏。内存泄漏的危害是什么?出现内存泄漏的进程正常结束,进程结束时这些内存会还给系统,不会有什么大伤害!出现内存泄漏的进程非正常结束,比如僵尸进程。危害很大,系统会越来越慢,甚至卡死宕机。需要长期运行的程序,出现内存泄漏。危害很大,系统会越来越慢,甚至卡死宕机。--服务器程序如何避免内存泄漏1. 工程前期良好的设计规范,养成良好的编码规范,申请的内存空间记着匹配的去释放。ps:这个理想状态。但是如果碰上异常时,就算注意释放了,还是可能会出问题。原创 2023-02-07 15:34:53 · 76 阅读 · 0 评论 -
类和对象(中)
但是:main函数 中不能直接调用Time类的析构函数,实际要释放的是Date类对象,所以编译器会调用Date类的析构函数,而Date没有显式提供,则编译器会给Date类生成一个默认的析构函数,目的是在其内部调用Time类的析构函数,即当Date对象销毁时,要保证其内部每个自定义对象都可以正确销毁。上面这段代码中我们没有在类中写函数,但是编译器会默认生成一个无参的默认构造函数,经过调试,我们发现类里面的这些数据并没有什么变化,这是为什么呢?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员。原创 2023-01-15 21:58:37 · 72 阅读 · 0 评论 -
类和对象(上)
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::以上两种方式更推荐第二种封装是一种更好的严格管理不封装是一种自由管理。原创 2023-01-07 22:11:08 · 69 阅读 · 0 评论 -
C++入门基础
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。命名空间中定义的是一个全局变量::叫做域作用限定符,就是配合命名空间一起使用的注意:同一个工程允许存在多个同名的命名空间,编译器最后会合成为同一个命名空间命名空间的使用方式1.把整个命名空间展开优点:使用方便缺点:隔离失效下面这段代码中rand就出现了问题,因为命名空间全部展开了,这里不知道是调的头文件中包含的rand还是N2中包含的rand.原创 2023-01-01 22:32:01 · 536 阅读 · 0 评论