![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
我头发好多啊
这个作者很懒,什么都没留下…
展开
-
C++中STL标准模板库的常见容器
STL是Stand Template Library缩写,也标准模板库,由惠普实验室提供。分为以下内容:容器:常用的一些数据结构,可以存放任何数据类型。算法:一些常用的算法,如:查找、排序、比较、交换,拷贝。迭代器:帮助使用容器的工具,使用方式与指针类似。1、迭代器实现了*和->运算符的类对象,也支持++/–运算符,可以方便的遍历、访问、操作容器。正向迭代器:容器类型<类型>::iterator it;使用++运算符,相当于从头尾遍历容器。容器的begin成员函数可以获原创 2020-09-27 22:15:41 · 311 阅读 · 0 评论 -
C++中的模板及其使用
一、什么是模板模板是C++中自动生成代码的技术,例如我们在C++若想实现一个函数的形参可以是多种数据类型就必须使用重载,模板则可以更加简单方便地实现这一点。二、为什么使用模板假1如我们想实现一个通用的排序算法C语言:通过回调函数实现,使用者调用麻烦。C++语言:函数重载,需要为多种类型实现一个第一版本,还会导致代码段增加。C/C++语言:借助宏函数实现,类型检查不严格,频繁使用还会增加代码段。由于以上原因C++之父在C++中实现了模板技术,既能支持多种类也能兼顾严格的类型检查,能让程序员编程原创 2020-09-27 21:31:40 · 1046 阅读 · 0 评论 -
C++中的文件流操作
文件流:C++把对文件的操作封装到了类中。ifstream 输入文件流ofstream 输出文件流fstream 输入/输出文件流1、打开文件使用类的构造函数或open成员函数打开文件,它们的参数一样。void open( const char *filename, openmode mode );或ofstream ofs("test.txt");if(ofs.good())//good成员函数用于判断文件是否打开成功{ cout << "文件打开成功" <&l原创 2020-09-27 21:10:31 · 462 阅读 · 0 评论 -
C++中类的继承
一、类的继承1、在解决问题时,先查看当前现在的类能否解决部分问题,如果可以则把旧的继承后再拓展来缩短解决问题的时间,降低解决问题的难度,继承就是为了让代码能够重复使用。2、当面临一个复杂问题时,可以先把问题进行分层,每层的类解决一部分问题,然后通过继承进行汇总,最终得到一个解决问题的类。二、继承的基本语法1、继承表一个子类可以继承多个父类,每个类的继承方式可以不同。class 子类:继承方式 父类1,继承方式 父类2,... //继承表{}2、继承方式public 公有继承原创 2020-09-25 09:52:35 · 450 阅读 · 1 评论 -
C++中的多重继承、钻石继承和虚继承
多重继承、钻石继承、虚继承1、多重继承在C++中子类可以有多个父类,按照继承表的顺序继承父类中的所有成员,并按照继承表调用父类的构造函数。在子类中按照继承顺序排列父类,并且会标记每个父类的位置。当父类的指针或引用指向子类对象时,编译器会自动计算出父类在子类中的位置。2、钻石继承假如一个子类继承了多个父类,而这多个父类有一个共同的父类,爷爷类中的成员会在孙子类中存在多份,这种继承叫钻石继承。这种继承并不会产生错误,孙子类访问祖先的成员时必须使用 父类名::成员名,重点是这种继承方式会造成冗余浪费原创 2020-09-25 09:30:11 · 338 阅读 · 0 评论 -
C++运算符重载及友元函数
一、运算符重载C++中是运算符当作函数来看待,所以C++中的运算符可以重载,这样可以让类对象支持运算符,对类对象进行定制化操作。例如:string类就支持很多运算符来代替标准库中的函数。= strcpy+= strlen==|!=|>=|<= strcmp二、双目录运算符重载假如:Test a,b; a+b操作可以调用两种函数Test的成员函数:a是触发者,b是参数Test operator+(cosnt Test& b) const{ return a+原创 2020-09-25 09:17:17 · 889 阅读 · 0 评论 -
C++类中的静态成员以及单例模式(含常见笔试面试题)
静态成员:类的成员变量可以被static修饰,存储位置由原来的栈或堆变成data或bss,整个程序中只存在一份,被所有的对象共享(静态成员属于类,而不是某个对象)。静态成员变量在类中声明,但必须在类外定义、初始化,与其它在类外的成员函数一样,需要加 类名:: 表示它属于哪个类,但不需要再加static。class Single{ static int a;};int Single::a = 10;静态成员变量虽然在类外定义,但它依然受访问控制符的限制,私有成员和保护成员只能在类内访问原创 2020-09-24 20:54:06 · 500 阅读 · 0 评论 -
C++类中的拷贝构造和赋值运算符(含常见笔试面试题)
拷贝构造也是一种构造函数,只是参数一个旧的对象,当使用旧对象给新创建的对象初始化时将调用拷贝构造。类名(const 类& that){}默认情况下编译器会自动生成一个拷贝构造函数,该函数负责把旧对象中的数据拷贝给新的对象。深拷贝与浅拷贝:如果类的成员中有指针,在拷贝时只拷贝指针变量,这种叫浅拷贝,这种拷贝分式在旧对象被释放时,该对象的指针变量所指向的内存也被释放。深拷贝是为对象维护一个新的指针,然后将旧对象的指针所向的内容拷贝一份新的给这个指针,这样就不会有上述浅拷贝存在的问题,但原创 2020-09-24 20:30:47 · 287 阅读 · 0 评论 -
C++类中的this指针与常函数
this指针:指向访问成员函数对象的指针,默认是隐藏的,但也可以显示使用。对象调用成员函数时会自动计算它的内存地址传递给成员函数中的this,而在成员函数调用其它成员函数,会把对象的地址接力传递下去。构造函数中也有this指针,指向这个正在构造的对象,原因是构造函数执行前对象所需的内存就已经分配完毕,执行构造函数的目的是为了申请其它资源、做一些准备工作,对指针成员分配内存。this指针的用法:1、函数参数与成员变量重名,参数会屏蔽成员变量,可以通过this指针访问成员变量。class Test{原创 2020-09-24 19:55:46 · 331 阅读 · 0 评论 -
C++中什么是类
一、面向对象与面向过程:面向过程:关注解决问题的步骤,算法。面向对象:关注的是谁能解决问题,需要什么样的数据(成员变量),具备什么样的功能(成员函数)。抽象:类是对象的抽象,而对象是类的具体化,而要使用类的功能,具体就要先定义一个对象封装:隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。继承:继承是指这样一种能力,它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程,它是类与类之间的一种关系原创 2020-09-23 17:19:15 · 6123 阅读 · 0 评论 -
C和C++的区别(含常见笔试面试题)
一、第一个C++程序1、文件扩展名 .cpp .cc .C .cxx2、编译器 g++ 大多数系统需要额外安装,ubuntu系统下的安装命令: sudo apt-get update sudo apt-get install g++ gcc也可以继续使用但需要增加参数 -xC++ -lstdc++3、头文件 #include <iostream> #include <stdio.h> 可以继续使用 #include <cstdio> 也可以使用原创 2020-09-23 16:37:38 · 498 阅读 · 0 评论