0%

STL的诞生

  • 长期以来,软件界一直希望建立一种可重复利用的东西
  • C++的面向对象和泛型化编程思想,目的就是复用性提升
  • 大多数情况下,数据结构和算法都未有一套标准,倒是被迫从事大量重复工作
  • 为了建立数据结构和算法的一套标准,诞生了STL
阅读全文 »

深拷贝和浅拷贝的简单区别

拷贝构造函数是一种特殊的构造函数,在创建对象时,它是使用同一类中之前创建过的对象来初始化新创建的对象

strcpy是深拷贝,“=”是浅拷贝

  1. 使用strcpy时会有两个字符串;而使用“=”只有一个字符串

  2. strcpy是将字符串拷贝到指定地址

阅读全文 »

基本指令

写文件时,文件打开模式:

ios::out, (output) 覆盖写入模式, 清空原有内容,从头写入新内容
ios::app, (append) 追加写入模式, 保留原有内容,尾部写入新内容 ,如果文件存在,就打开文件,否则,如果文件不存在,则创建并打开一个空白文件

读文件时,文件打开模式:
ios::in, (input) 以只读方式直接打开文件 ,只能读取,不能写入

阅读全文 »

为什么要对运算符进行重载

C++预定义中的运算符的操作对象只局限于基本的内置数据类型,但是对于我们自定义的类型(类)是没有办法操作的。但是大多时候我们需要对我们定义的类型进行类似的运算,这个时候就需要我们对这么运算符进行重新定义,赋予其新的功能,以满足自身的需求。

运算符重载的实质

运算符重载的实质就是函数重载或函数多态运算符重载是一种形式的C++多态。目的在于让人能够用同名的函数来完成不同的基本操作。要重载运算符,需要使用被称为运算符函数的特殊函数形式,运算符函数形式:operator p(argument-list)//operator 后面的’p’为要重载的运算符符号。

阅读全文 »

类的继承

简单介绍

C++是一种面向对象的语言,最重要的一个目的就是——提供可重用的代码,而类继承就是C++提供来扩展和修改类的方法。类继承就是从已有的类中派生出新的类,派生类继承了基类的特性,同时可以添加自己的特性。实际上,类与类之间的关系分为三种:代理、组合和继承。以下是三种关系的图解:(为了更好的理解)

阅读全文 »

使用template关键字不但可以定义函数模板,也可以定义类模板,类模板代表一族类,是用来描述通用数据或处理方法的机制,它使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。类模板可以说是用类生成类,减少了类的定义数量。

阅读全文 »

众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我们一起看下enum的使用方法。

阅读全文 »

前端检验

这是最简单的绕过方式,该方式只在前端检验文件后缀是否为php,若是则退回,不是则上传。

绕过方式很简单,将php格式的一句话木马后缀改为png,然后上传抓包,修改文件后缀为php即可。

后端检验文件格式

这种检验方式同样可以用上传图片,抓包改后缀的方式绕过,也是比较基础的

阅读全文 »

函数模板简介

模板是C++的高级特性,分为函数模板类模板,使用模板能够快速建立具有类型安全的类库合集和函数合集。

这里我们主要介绍函数模板

函数模板不是一个实在的函数,编译器不能为其生成可执行代码。定义函数模板最后只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定功能。

阅读全文 »

什么是类以及类的定义

类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法

类的实质

类是一种用户自定义的引用数据类型,它的本质是数据类型,并不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作

类的特性

1
2
3
4
5
1、抽象;
2、封装和数据隐藏;
3、继承;
4、多态;
5、代码可重用性
阅读全文 »