c++
文章平均质量分 89
轩轩uvtg
编程在学新人
展开
-
C++基础语法——智能指针
内存泄漏是什么?内存泄漏:指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。那么内存泄漏会有什么样的危害?长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。这里一般有两种情况,如// 1.内存申请了忘记释放// 2.异常安全问题div();原创 2023-10-25 18:49:53 · 136 阅读 · 0 评论 -
C++基础语法——C++11
在C++98标准中,允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。即而在C++11中,大括号括起的列表(初始化列表)的使用范围被扩大了,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加。如注:建议在日常定义中,不要去掉=,虽然不要求会用但是要能看懂。原创 2023-10-24 19:19:45 · 127 阅读 · 0 评论 -
C++基础语法——unordered_map和unordered_set
源文档如下大致翻译如下1. unordered_map是存储键值对的关联式容器,其允许通过keys快速的索引到与其对应的value。2. 在unordered_map中,键值通常用于惟一地标识元素,而映射值是一个对象,其内容与此键关联。键和映射值的类型可能不同。3. 在内部,unordered_map没有对按照任何特定的顺序排序, 为了能在常数范围内找到key所对应的value,unordered_map将相同哈希值的键值对放在相同的桶中。原创 2023-10-06 16:15:42 · 319 阅读 · 0 评论 -
C++库函数——set与map的模拟实现
对于上面这棵红黑树,我们可以很容易得知道begin()是红黑树的最左节点,end()应该是一个空节点。即接下来定义iterator及其具体操作。原创 2023-10-06 15:11:25 · 220 阅读 · 0 评论 -
C++库函数——map与set
我们先来看源文档翻译如下set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。原创 2023-09-17 23:14:42 · 532 阅读 · 0 评论 -
C++基础语法——多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person,Person对象买票全价,Student对象买票半价。代码实现如下public:cout原创 2023-09-02 22:35:56 · 285 阅读 · 0 评论 -
C++基础语法——继承
在这里我们先举一个例子public:protected:// 姓名// 年龄protected:int _stuid;// 学号protected:int _jobid;// 工号同一个人它有可能同时具有多重身份,在上述例子中他可能就同时具有老师和学生两个身份,这两个身份有一些相同点(如它们都是人,所具有的年龄和姓名不会变化),也有一些不同点(如作为老师时有工号,学生时有学号)。了解这个例子之后我们大概就了解到了继承是什么,那么我们如何来书写它呢?原创 2023-08-17 23:50:48 · 899 阅读 · 5 评论 -
C++库函数——String类的模拟实现
为了与库函数里面的string分开,我们将模拟实现的string类存放在自己定义的命名空间中,同时尽可能的将对应功能函数的名字与库函数一一对应,即。原创 2023-08-02 17:40:35 · 201 阅读 · 0 评论 -
C++库函数——string类
源文档译:1.字符串是表示字符序列的类2.标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3. string类是使用char(即作为它的字符类型,使用它的默认和分配器类型关于模板的更多信息,请参阅basic_string)。4. string类是模板类的一个实例,它使用char来实例化模板类,并用char_traits和allocator作为的默认参数根于更多的模板信息请参考。5.原创 2023-06-01 18:38:20 · 7835 阅读 · 0 评论 -
C++基础语法——模板
目录1. 泛型编程2. 函数模板①概念②使用③原理 ④实例化 ⑴隐式实例化⑵显式实例化3. 类模板①格式②实例化在平常的编写中,对于一个实现固定作用的函数,如交换两变量的值的Swap函数,对于不同类型只能编写相对应的重载函数,即 对于这样的函数重载,有一些不利之处那我们能否告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码呢?答案是肯定的,而这又与泛型编程有关而在这之中模板是泛型编程的基础。模板也分为函数模板与类模板 函数模板由一个或多个类型参数组成,其中类型参数使用特殊的语法来声明为原创 2023-05-20 23:08:59 · 2717 阅读 · 0 评论 -
C++基础语法——内存管理
而在处理自定义类型时,new会先调用operator new函数再调用自定义类型的构造函数,而delete会先调用析构函数再调用operator delete函数。newdelete为什么要如此设计呢,我们举一个具体例子来说,比如我们要在堆上申请一个栈对象int main()delete st;return 0;有。原创 2023-05-18 15:05:36 · 1140 阅读 · 0 评论 -
C++应用实例——日期类的实现
我们使用如下代码来使用并检测。对于流输入与流输出有。原创 2023-05-10 17:12:15 · 660 阅读 · 0 评论 -
C++基础语法——类和对象
构造函数是一个特殊的成员函数,名字与类名相同创建类类型对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。注:构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成对象中资源的清理工作。拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰)原创 2023-05-12 20:44:25 · 1346 阅读 · 0 评论 -
C++基础语法——引用
不是新定义一个变量,而,编译器不会为引用变量开辟内存空间,它和它引用的变量。原创 2023-04-21 23:45:48 · 98 阅读 · 0 评论 -
C+基础语法——缺省参数与函数重载(含底层原理)
如果在函数调用时,我们只给出了第一个和第三个参数,那么编译器就无法确定第二个参数的默认值,因为它不知道第三个参数的值。这样,使用缺省参数可以使函数调用更加方便,因为调用者只需要传递那些必须的参数,而不必为所有参数都指定一个值。在这里如果我们知道要插入的数据个数为多少时,就可以提前调整,不用频繁的扩容影响效率,且如果不知道要插入多少数据时,依旧可以只传入一个参数。,显而易见,在C语言中各个函数所生成的符号表是根据函数名来生成的,因此C语言不能实现函数重载。是指在函数定义中,为函数的一个或多个参数。原创 2023-04-19 19:14:25 · 477 阅读 · 0 评论 -
C++基础语法——命名空间(namespace)与输入输出流(iostream)
如在A文件内名为namespace N定义了a元素,在B文件内也有名为namespace N定义了b元素,在最后运行时,系统会自动将它们合成在一起,因此如果使用了相同名字的变量则会报错。且如果在全局中没有搜索到对应变量后,不会自动到命名空间域中去寻找,因此需要我们使用using namespace xxqsg手动展开,如下。变量、函数和后面的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是。在使用变量时,程序搜索变量是有先后顺序的,一般来说是。原创 2023-04-13 09:24:12 · 414 阅读 · 1 评论
分享