c++学习路程
文章平均质量分 62
c++学习过程中笔记记录
我焦虑的编程日记
热爱编程,但很焦虑。
gitee主页:https://gitee.com/iqyy
展开
-
【c++】组合类+继承情况下构造顺序
构造顺序同普通继承,先父后子,内部类是最老的(最先调用构造的)。原创 2023-06-12 13:45:46 · 461 阅读 · 0 评论 -
【c++】要点总结
(类Shape内声明)const double PI;(类Shape内声明){}(类Shape构造函数。原创 2023-06-08 15:05:25 · 435 阅读 · 0 评论 -
【C++】虚继承相关问题
虚继承就是为了解决二义性而产生的。分为和不调用同名成员则不产生二义性问题。原创 2023-06-08 15:02:44 · 96 阅读 · 1 评论 -
【边角知识】友元函数重载的性质
重载为友元函数后其不属于任何一个类,从而不能加任何类域限定符。原创 2023-03-12 18:32:27 · 114 阅读 · 5 评论 -
【c++】STL中list容器的模拟实现
STL中list容器就是,也是之前使用c语言实现过的。对比顺序表的优点是:1.头插头删效率高。2.增容效率高,存一个增容一个。3.空间利用率高。缺点是:1.不支持随机访问,访问元素的时间复杂度是O(N)。2.要占用额外的物理空间进行存储元素之间的关系(prev与next指针)原创 2023-03-02 22:49:26 · 440 阅读 · 15 评论 -
【边角知识】string的优化
大小为16字节,用于当string的长度小于15字节时(一个用来存放‘\0’),这样就不需要在堆上申请空间,直接存在栈上即可。但是当string的长度大于15字节时,这个string就存储在了。中,string的结构里有一个。原创 2023-03-01 18:38:06 · 132 阅读 · 4 评论 -
【c++】vector实现(源码剖析+手画图解)
vector实现时最难想的是赋值重载时的现代写法,很妙,最有趣的是两种迭代器的失效问题。与数组相同,但又多少有点不同。一、vector是什么?vector是一个序列式容器(其中的元素都可序(ordered),但是未必有序(sorted)),本质上是可变数组,尾插尾删效率较高。vector的实现是。原创 2023-02-12 22:51:25 · 2964 阅读 · 13 评论 -
【c++】new一个对象后面加括号与不加括号的区别
一个类中,若一旦有一个用户自定义构造函数,那么由编译器提供的默认构造函数就不再存在。默认构造函数不复存在时,用户必须为这个类再自定义一个复合默认构造函数(选所有自定义构造函数其中之一,把形式参数均赋默认值即可)。2. 若括号非空,即有实参项,可以理解为调用重载构造函数,或 复合默认构造函数。:编译器会为每一个类默认提供一个构造函数,称之为默认构造函数。默认构造函数一般参数为空。不论自定义构造函数(即构造函数的重载版)有多少个,只允许有一个复合默认构造函数。调用默认构造函数,或复合默认构造函数。转载 2023-02-12 00:08:17 · 671 阅读 · 2 评论 -
【C/C++】杨辉三角实现
本文主要讲述了杨辉三角c和c++的具体实现,均为动态。今天为一个小小的经典问题给难住了一会,尤其是用c语言实现的时候,没看对二维数组开辟的个数,造成了释放的报错,实在是不小心,练习的还是太少。“纸上得来终觉浅,绝知此事要躬行!原创 2023-01-26 22:00:48 · 3826 阅读 · 4 评论 -
【c++】string类的模拟实现(下)
本文主要模拟实现string类的增删查改的成员函数。今天系统学习了string类成员函数的详细实现,速度并不是很快,对于数组的控制不是很到位,像书上说的一样:“在这件事上,你总是少了一位。”以后要加强学习,加大代码量练习,再接再厉!原创 2023-01-25 23:24:43 · 450 阅读 · 6 评论 -
C++ 不能在成员函数 的类外部重新声明该函数
编译器自检有时是很重要的。今天在写++重载函数时,出现了这样的错误,一开始以为这个运算符是不能写在另一个文件中的,但是回过头来一想倒也不对,编译器的提示是不能重新声明,类中的成员函数确实不能在类外声明(那不就不是自己类中的成员了吗)。原创 2023-01-25 12:26:35 · 8722 阅读 · 4 评论 -
【c++】string模拟实现(三大基本成员函数)
随着c++学习的深入,逐渐接触到了STL等,我首先从最简单最久远的string开始学习。一、string的成员变量string是c++中的字符串类,内含了字符串需要的各种变量:目前所存储的字符串变量、有效字符多少、可存储的有效字符有多少等等。private:// 已经存储的字符char* _str;原创 2023-01-25 02:01:27 · 267 阅读 · 2 评论 -
【c++】reserve与resize的区别
我创建了一个空字符串s3,可见默认给的capacity(有效字符容量)就是15,说明vs在写string类时,给了缺省值15。在s1中我想保留20个字节的空间,编译器为我预留了31(32,还有一个'\0')字节的空间,而不是整20字节。在s2中我想保留10个字节的空间,编译器为我预留了15(16,同上)字节的空间,而不是我想要的10字节。综上,可以得出resize的作用是改变字符串的size,如果给定的n比size小,那就截断;由此可知,编译器在字符串剩下的空间不够用时一般进行的是1.5倍扩容。原创 2023-01-21 00:47:21 · 1368 阅读 · 3 评论 -
【深入理解】初始化列表
①const对象②引用对象③无默认构造函数的自定义类型。原创 2023-01-11 02:31:27 · 1456 阅读 · 0 评论 -
C++ 为什么能够函数重载?
因为存在“函数名修饰”。c++编译时候与c语言几乎相同,都是通过函数名去查找,有一点不同的是c语言没有函数名修饰这个概念,所以c语言是直接拿着函数名去查找,此时如果有两个相同的函数名的话,那就产生了二义性,但是c++的出现产生了“函数名修饰”这个概念。函数名修饰就是把函数名按照特定的规则对其进行修饰,使得相同名字、参数不同(也就是函数重载的三大条件:形参的个数,顺序,类型不同)的函数在编译的时候能拥有不同的名字和地址,这样在链接的时候就不会产生二义性和冲突。原创 2023-01-02 16:51:48 · 261 阅读 · 2 评论 -
默认成员函数详细实例学习
今天学习了类中的默认成员函数,主要有六个:构造函数,拷贝构造函数,析构函数,运算符重载和取地址重载(普通对象和const对象取地址)。我使用了日期类对这一块的内容进行了加深巩固。原创 2023-01-07 20:09:51 · 192 阅读 · 1 评论 -
C++实现栈全过程中遇到的问题详解
原因是初始化时想用缺省参数的特性,但是在声明与定义中都写了缺省参数,所以导致了重定义问题。改正:只在头文件中写缺省参数,也方便后面的维护。原创 2023-01-07 00:45:53 · 751 阅读 · 1 评论 -
【c++】成员变量在类中声明时给值时是什么操作?
只是赋缺省值原创 2023-01-11 02:46:33 · 546 阅读 · 0 评论