
C++学习与复习
文章平均质量分 64
用于记录C++的学习,以及后期复习
今天也要努力学C哦
这个作者很懒,什么都没留下…
展开
-
19、面向对象-容器
name = n;public:int main()//重载小于号//重载大于号//compare是函数对象/*compare c;//函数对象 仿函数 伪函数c(s1,s2);//重载()*/p.push(s1);p.push(s2);p.push(s3);p.push(s4);p.push(s5);p.push(s6);while(!p.empty())原创 2023-09-07 15:12:22 · 185 阅读 · 1 评论 -
18、面向对象-STL
algorithm(算法)、container(容器)和iterator(迭代器)操作容器的办法 存放数据 衔接算法和容器。原创 2023-09-05 09:05:33 · 121 阅读 · 1 评论 -
17、面向对象-io操作
C++输入输出包含以下三个方面的内容:对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的输入输出,简称文件I/O。对内存中指定的空间进行输入和输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)。这种输入和输出称为字符串输入输出,简称串I/O。原创 2023-09-04 16:12:16 · 130 阅读 · 1 评论 -
16、面向对象-强制类型转换
任意类型之间都能进行转换,编译器很难判断其正确性。原创 2023-09-04 13:17:13 · 152 阅读 · 1 评论 -
15、面向对象-异常处理机制
例如open()、creat()函数会有返回值,来判断是否成功执行。异常是一种程序控制机制,与函数机制独立和互补。异常就是冲着改变程序控制结构,以适应面向对象程序更有效地工作这个主题。在错误处理方面获得最大的好处。原创 2023-09-04 10:10:51 · 156 阅读 · 1 评论 -
14.面向对象-类模板(template<typename xx>)
Child2(T a,U b) :Parent(a) //对象初始化链表要带上参数类型。::Test(T a) //表示Test是模板类作用域 不是;2、类模板在表示如数组、表、图等数据结构显得特别重要,这些。数据结构的表示和算法不受所包含的元素类型的影响。2、将类模板成员函数功能定义的文件修改为。成员函数功能的定义和使用。(将文件修改为hpp)类所需数据的类型参数化。原创 2023-09-03 14:10:30 · 208 阅读 · 0 评论 -
13、面向对象-函数模板(template)
模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。原创 2023-09-03 11:41:29 · 177 阅读 · 0 评论 -
12、面向对象-运算符重载(operator)
又如”“也是位移运算符(右移),但在输入操作中又是与流对象 cin 配合使用的流提取运算符。所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。=, [], ()和->操作符只能通过成员函数进行重载。返回值引用的话是变量,不引用就返回常量。> 输出和输入重载。原创 2023-09-02 11:19:01 · 203 阅读 · 1 评论 -
11、面向对象-动态类型识别和抽象类
使用虚函数进行动态类型识别的缺陷1、必须从基类开始提供类型虚函数2、所有派生类都必须重写类型虚函数3、每个派生类的ID必须唯一private:int a;//如果指针指向派生类对象,可以转换,指向基类对象,不可以转换if(p->getid() == Child :: ID) //如果成立,说明指向派生类对象//派生类指针指向基类对象//不存在这块内存 因为只有4个字节else。原创 2023-09-01 11:29:49 · 103 阅读 · 1 评论 -
10、面向对象-多态
2、静态联编(static binding),是程序的匹配、连接在。类内存中存放虚函数表指针和变量,虚函数表中,存放函数的地址。2、有虚函数重写(发生在不同的作用域,函数原型相同)1、联编是指一个程序模块、代码之间互相关联的过程。相同的语句 有不同的执行结果(多态,多种形态),所以又称为晚期联编(迟绑定)。重载函数使用静态联编。3、基类指针指向派生类对象。关键字 virtual。序联编推迟到运行时进行。原创 2023-08-31 19:44:36 · 108 阅读 · 0 评论 -
9、面向对象-多继承
一个类继承了多个类语法:class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n数据成员和成员函数声明。原创 2023-08-30 18:10:13 · 122 阅读 · 0 评论 -
8、面向对象-继承
继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。被继承的类称为父类或基类,继承的类称为子类或派生类。原创 2023-08-30 15:09:30 · 89 阅读 · 0 评论 -
7、面向对象-面向对象模型
1、静态成员变量特征:所有对象共享一个静态成员变量注:1、静态成员变量一定要在类的外部初始化(静态成员变量需要存放在共有变量中)2、静态成员变量可以通过类名来访问2、静态成员函数特征:静态成员函数内部只能访问静态成员变量,不能访问普通变量格式:static void xxx()原创 2023-08-29 15:46:06 · 170 阅读 · 1 评论 -
6、面向对象-动态对象建立(堆类型对象)
单纯的申请一块内存,不执行对象的建立(没有调用构造函数。原创 2023-08-29 10:54:16 · 91 阅读 · 0 评论 -
5、面向对象-构造和析构
1、构造函数定义:可以在类创建对象时,自动初始化类的成员变量多个构造函数可以一起存在,参考函数重载。①无参构造函数 格式:Test ();无返回值 函数名和类名一样 无参数功能:在创建对象后,自动初始化对象的成员变量②有参构造函数: 无返回值 函数名和类名一样 无参数传参方法:1、在创建对象时传参。(优先使用)③拷贝构造函数` 1、对象传参,形参会拷贝实参,会调用一次拷贝构造函数2、析构函数定义:在函数运行结束后,原创 2023-08-28 20:37:06 · 106 阅读 · 0 评论 -
4、面向对象-类的封装
1、面向对象的概念C语言面向过程,需要一步步实现。C++面向对象,将过程封装起来,直接使用完整的功能函数。2、面向对象的特点①抽象的作用抽象是人们认识事物的一种方法;抓住事物的本质,而不是内部具体的细节或者具体的实现。②封装的作用封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象的内部,对外提供一定的接口,在对象之外只能通过接口操作对象③继承的作用。原创 2023-08-28 15:48:20 · 86 阅读 · 0 评论 -
3、面向对象-函数
1、作用:不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处,适用于功能简单,规模较小又使用频繁的函数。递归函数无法内联处理,内联函数不能有循环体,switch语句,不能进行异常接口声明。主要体现在于inline关键字内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。原创 2023-08-27 19:10:16 · 55 阅读 · 0 评论 -
2、面向对象-const和引用
不同:作用域不同,const修饰的是局部变量,define修饰全局变量,编译时const会做类型检查,define只是简单的替换。c++中const修饰的是常量,会将数据存放在符号表中,读取时从符号表中读取。引用在定义时,必须初始化,且无法修改:不初始化,是个垃圾值,不能用。1、引用作为其它变量的别名而存在,因此在一些场合可以代替指针;二、C++的引用(引用就是变量的别名,必须初始化且无法修改)2、引用相对于指针来说具有更好的可读性和实用性。c中const修饰的是只读变量,核心仍然是变量。原创 2023-08-27 16:19:31 · 79 阅读 · 0 评论 -
1、面向对象-C到C++
可以发现,对于不带.h的头文件,所有的符号都位于命名空间 std 中,使用时需要声明命名空间 std;它们提供的内容和相应的旧的C头文件相同,只是内容在 std 中。2) 新的 C++ 头文件,如 iostream、fstream 等包含的基本功能和对应的旧版头文件相似,但头文件的内容在命名空间 std 中。头文件的内容不在 std 中。注意:在标准化的过程中,库中有些部分的细节被修改了,所以旧的头文件和新的头文件不一定完全对应。②C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。原创 2023-08-27 12:50:26 · 80 阅读 · 0 评论