C++学习笔记
文章平均质量分 55
记录C++学习的日常
夜雨观山色
孤身打马南屏旧桥边过,恰逢山雨来时雾蒙蒙
展开
-
C++学习笔记之STL基础
例如拷贝,替换,删除等等 非质变算法:是指运算过程中不会更改区间内的元素内容,例如查找、计数、遍历、寻找极值等等。容器和算法之间粘合剂提供一种方法,使之能够依序寻访某个容器所含的各个元素,而又无需暴露该容器的内部表示方式。每个容器都有自己专属的迭代器。(algorithm) 迭代器(iterator) ,大体分为六大部件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器。序列式容器:强调值的排序,序列式容器中的每个元素均有固定的位置。关联式容器:二叉树结构,各元素之间没有严格的物理上的顺序关系。原创 2024-10-14 11:17:26 · 301 阅读 · 0 评论 -
C++学习笔记之模板
普通函数调用时可以发生自动类型转换(隐式类型转换)而 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换 ,如果利用显示指定类型的方式(即传入参数数据类型与指定的数据类型不一致时),可以发生隐式类型转换。(1)自动类型推导,必须推导出一致的数据类型T(即如果多个函数参数使用模版的通用数据类型,这些参数类型必须一致,才能使用自动类型推导),才可以使用。解决方式有两种:(1)直接在主文件中包含.cpp文件(2)将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制。原创 2024-10-10 17:29:34 · 806 阅读 · 0 评论 -
C++学习笔记之对象特性
当类中成员是其他类对象时,我们称该成员为对象成员,它们的构造的顺序是 :先调用对象成员的构造,再调用本类构造,析构顺序与构造相反。this指针是隐含每一个非静态成员函数内的一种指针,指向被调用的成员函数所属的对象,this指针不需要定义,直接使用即可。this指针的本质是一个指针常量,指针的指向不可修改,如果想让指针指向的值也不可以修改,需要声明常函数。在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上。* 成员函数后加const后我们称为这个函数为**常函数**原创 2024-09-10 11:12:49 · 447 阅读 · 0 评论 -
C++学习笔记之对象的初始化和清理
对象创建时,系统会自动调用构造函数完成对象的初始化,对象销毁前,编译器会自动调用析构函数完成清理工作。二者都只会调用一次。如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数是空实现。构造函数可以有参数,可以发生重载。析构函数不可以有参数,不可以发生重载。析构函数语法:~类名(){}构造函数语法:类名(){}此心光明,亦复何言。原创 2024-09-03 16:48:39 · 155 阅读 · 0 评论 -
C++学习笔记之函数提高、封装
在C++中 struct和class唯一的区别就在于 默认的访问权限不同,struct默认权限是公共权限,class默认权限是公共权限(不使用权限关键词)。2.如果函数声明有默认参数,那么函数实现就不能有默认参数。3)private 私有权限 类内可以访问 类外不可以访问 子类不可访问。2)protected 保护权限 类内可以访问 类外不可以访问 子类可以访问。语法:返回值类型 函数名(占位参数(只有数据类型,无形参名)){}2.对于写权限,我们可以检测数据的有效性。原创 2024-08-30 15:12:12 · 597 阅读 · 0 评论 -
C++学习笔记之引用
2.引用一旦初始化,就不可以更改。只能作为初始化时变量的别名,不允许更改。1.引用必须初始化。创建时必须指明引用的变量名称。语法: 数据类型 &别名=原名。引用是为变量的起别名。原创 2024-08-28 16:26:39 · 273 阅读 · 0 评论 -
C++学习笔记之基础知识1
字符型变量用于显示单个字符,占用一个字节,存储时,是将字符的ASCII码存入存储单元,而非其本身。\t 水平制表符 将添加空格将位置扩充到8个位置,跳到下一个TAB位置,达到对齐的效果。//输入小数默认是多精度,加f可以告诉编译器位单精度。true ----真(1);false ----假(0)。main是一个程序的入口,在一个程序总有且只有一个。查看ASCII码 ('a'为97,A为'65')变量是一段内存的名称,方便操作这段内存。2.单引号内必须是单个字符,不能是字符串。原创 2024-08-29 15:31:01 · 976 阅读 · 0 评论 -
C++学习笔记之运算符重载
加法运算符重载有全局函数和局部函数两种实现方式,下面的代码重新编写了加法运算符函数重载加法运算符,将两个自定义类Person的的两个属性number1,number2相加,返回属性相加后的Person类。由于运算符只能实现一些内置数据类型的运算,而无法对自定义数据类型进行运算,对目前已有的运算符进行重新定义,以拓展其功能。这里只能使用全局函数重载,是因为如果使用局部函数重载,只能实现原创 2024-08-20 17:06:00 · 531 阅读 · 0 评论 -
C++学习笔记之继承
两个子类Base1、Base2继承了同一个父类Base0,又有一个类Son同时继承了这两个子类Base1、Base2,这种继承关系叫做菱形继承(钻石继承)。父类中所有的非静态成员属性都会被子类继承,编译器会隐藏父类中的私有成员属性,因此子类无法访问,实际上子类仍然继承了这一部分。菱形继承会出现一个问题,最底层的子类Son中会有两份最上层父类Base0的数据,通过虚继承的方式解决该问题。继承可以减少重复代码,继承后子类中成员包含两部分:自己增加的成员和继承的成员。子类中的成员属性和函数直接访问即可。原创 2024-08-21 17:33:15 · 576 阅读 · 0 评论 -
C++学习笔记之内存分区管理
上述结果中指针p解引用后值均为10,这是因为在测试函数中通过new关键字开辟的存放10的空间在堆区,不会随着函数的结束而销毁,p接收的这段空间的地址,尽管指针a被销毁了,但是其值传递给了p,也就是在堆区开辟的空间地址被传递给了p。(实参和形参:形参是函数定义的参数,是一个占位符,用于接收函数调用时传进来的实参;1.代码区,存放程序的二进制代码,操作系统自行管理这部分内存,这部分内存有两个特性-只读和共享,前者是为了防止程序意外修改了机器指令,后者是为了让那些频繁被执行的程序,在内存中只有一份代码。原创 2024-08-23 14:53:01 · 616 阅读 · 0 评论 -
C++学习笔记之多态
动态多态,在运行阶段确定函数地址,实现是在基类中编写虚函数,在子类中重写虚函数,调用时可以定义父类的指针或者引用,来指向子类对象,指向那个子类对象就调用那个子类的虚函数,这就是我们常说的实现父类指针或者引用指向子类对象。通常情况下多态中,父类是实现并没有什么意义,主要是调用子类重写的内容,因而实在编程中可以将虚函数写为纯虚函数,含有纯虚函数的类也被称为抽象类,抽象类无法实例化对象也必须在子类中重写抽象类的纯虚函数,否则子类也属于抽象类。多态是C++面向对象的三大特性(封装,继承,多态)之一。原创 2024-08-22 17:15:01 · 313 阅读 · 0 评论 -
C++学习笔记之友元
在类中使用friend关键字声明成员函数,使得友元成员函数可以访问该类中的保护和私有成员。在类中使用friend关键字中声明友元类,使友元类可以访问该类中的私有和保护成员。孤身打马南屏旧桥边过,恰逢山雨来时雾蒙蒙。1.全局函数做友元;3.成员函数做友元。原创 2024-08-19 17:08:40 · 426 阅读 · 0 评论