自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 C++中friend的使用方法

1 friend介绍friend的中文含义是“友元”,用来在类外部使用该类的private和protected成员。例如,定义MyClass类如下所示classMyClass{ public: MyClass(stringname) { m_name =name; } private: stringm_name;};自定义函数ShowName()的定义为voidShowName(MyClassmy){ cou...

2020-08-07 09:16:35 16

原创 C++中类成员函数的this参数

在C++中,如果某个类的成员函数中使用了该类的成员(成员变量或成员函数),则该成员函数会通过一个名为this的隐式参数来访问这个成员(成员变量或成员函数)。例如,有一个类classmyClass() {public: intm_i; intgetI() { returnm_i; }}其中,成员函数getI()中使用了该类的成员变量m_i,因此getI()函数实际上包含了一个隐藏的参数this,int getI(this){return this-...

2020-08-06 18:04:26 14

原创 C++中bad_alloc类

当分配内存的请求没有被成功执行时,系统会抛出一个用bad_alloc类来描述出的异常。1 定义bad_alloc类的定义如下所示classbad_alloc: publicexception{ bad_alloc(); virtual~bad_alloc(); bad_alloc(constbad_alloc&); bad_alloc& operator=(constbad_alloc&); constchar*...

2020-08-06 15:52:58 12

原创 C++中类的常量成员函数

类的常量成员函数(const member function)是类的成员函数,其定义的方式是将const关键字放在成员函数参数列表之后。要说明常量成员函数的用途,首先从类成员的隐式参数this说起。1 this参数1.1 this参数介绍structA{ inta; A(intparam) { a=param; } intgeta() { returna; }};以上代码自定义了类A,该结构包含了自定义的构造函数和geta()成...

2020-08-05 09:25:54 18

原创 Android Studio安装虚拟机的方法(2-2)

接下来就是下载选中的组件,即指定的SDK,如图5所示。图5 下载组件下载并安装完成后,点击图6的“Finish”按键。图6 安装完成之后,在弹出的图7对话框中,可以设置虚拟机的名字、ID、像素、屏幕显示方式(水平或垂直)、摄像头以及网络等属性。在此,使用默认值即可,点击“Finish”按键。图7 设置虚拟机属性接下来就可以在虚拟设备列表中看到创建的虚拟机了,如图8所示,点击列表“Action”中的三角形按键,如图8所示。图8 启动虚拟机...

2020-08-04 11:48:54 35

原创 Android Studio安装虚拟机的方法(2-1)

在使用Android Studio进行开发,当调试app时需要连接安装了安卓系统的真机,如果没有真机,则可以使用Android Studio的SDK提供的虚拟机进行调试。首先,在Android Studio的工具栏中选择“AVD Manager”按键。其中,AVD是Android Virtual Device的缩写,即安卓虚拟设备。在弹出的窗口中点击“Create Virtual Device”,创建虚拟设备按键,如图1所示。图1 开始创建接下来在弹出的“选择硬件”的对话框中选择要创建.

2020-08-04 11:45:30 29

原创 安装Android Studio的方法(2-2)

在启动Android Studio之后,会弹出“导入配置文件”对话框,此时选择“Do not import settings”即不导入配置文件,如果需要导入配置文件,则选择“Config or install folder”,并且指定配置文件所在的目录,如图7所示。图7 导入配置文件因为此时只安装了Android Studio还没有安装SDK,所以接下来会弹出无法访问SDK的警告对话框,我们可以在程序启动后安装SDK,此时选择“cancel”按键即可,如图8所示。图8 无法访..

2020-08-01 20:01:19 41

原创 安装Android Studio的方法(2-1)

下载好Android Studio安装程序,双击之后,弹出如图1的对话框,点击“Next”按键开始安装。图1 开始安装之后,在选择要安装的组件对话框中,选中“Android Virtual Device”,如图2所示,并按下“Next”按键。图2 要安装的组件接下来,设置Android Studio的安装路径,因为需要占用大量的存储空间,一般不要把Android Studio安装到C盘,如图3所示。图3 设置安装路径接下来在“选择开始菜单文件夹”的...

2020-08-01 19:56:21 24

原创 完全卸载Android Studio的方法

通过三个步骤可以完全卸载Android Studio,这三个步骤是(1)卸载Android Studio (2)卸载Android SDK(3)删除相关文件夹1 卸载Android Studio在控制面板或者360软件管家中卸载Android Studio。本文以360安全管家为例进行示范,首先在360管家的“卸载”界面中选中Android Studio,并且点击“卸载”按键,如图1所示。图1 开始卸载Android Studio之后选中“Android User Setting”.

2020-08-01 11:02:22 45

原创 C++中取余运算符与负数

在C++的算术运算符中,%表示取余,例如int i = 7%2;此时,i的值是1。1 运算对象必须是整数需要注意的是,%的运算对象必须是整数,如果是小数,则会报错。int j = 7.0%2;2 运算对象是负整数对于m%n格式的表达式,当m与n的正负符号不同时,表达式最终取值的符号与m相同,即当m是正数时,m%n的值是正数,当m是负数时,m%n的值是负数。int i1 = 7%(-2);int i2 = -7%2;此时,i1的值是1,而i2的值是-1。对于求商

2020-07-21 11:57:48 54

原创 C++中bool类型与算术运算符

C++中的算术运算符包括“+”、“-”、“*”、“/”和“%”等运算符。算术运算符都能作用于任意算数类型。对于bool类型来说,在使用算术运算符时需要格外注意。1 整型与bool类型的二元算术运算对于不同类型的数进行算术运算时,小类型的数会被提升成较大类型的数,所有运算对象最终会转换成同一类型。int i = 1 + true;此时,true会被提升为整型1,此时i的值是2。2 bool类型与一元算术运算符除了之前提到的二元算术运算符之外,还有“+”和“-”两个一元算术运算符,分别

2020-07-21 11:30:59 59

原创 C++中decltype与左值和右值

1 decltype关键字decltype是C++11中引入的新的类型说明符。编译器根据分析表达式或者函数返回值来分析其类型。decltype的详细用法,请参考《C++中decltype的使用方法》2 decltype与左值和右值decltype后面跟的表达式是左值或者右值时,编译器分析的类型会有所不同。如果表达式(非单个变量)的求值结果是左值,则编译器会得到一个引用类型;如果表达式(非单个变量)的求值结果是右值,则编译器会得到一个与表达式相同的类型。intarr[2] = { 10,2.

2020-07-16 14:46:17 48

原创 C++中的左值和右值

1 基本概念在C++中,可以取地址的,有名字的表达式成为左值,不能取地址的,没有名字的就是右值。例如int i = 1;其中,i是左值,而1是右值。2 常量对象对于常量对象,const int ci = 10;虽然不能将ci放在赋值语句的左边,但是能够对ci取地址,所以常量对象ci是左值。3 通过取地址符获取的对象获取对象地址的符号是&,则&i表示变量i的地址,因为无法对&i进行取地址操作,所以&i是一个右值。4 使用左值与右值

2020-07-16 14:16:50 32

原创 C++的二维数组2

1 范围for语句范围for语句是C++11新标准提供的一种语句,该语句可以遍历给定数组中的每个元素并对数组中的每个值执行某种操作,其格式为:for(声明:数组)语句每次循环,声明中的变量都会被初始化为数组中的下一个元素值。2 利用范围for语句操作二维数组在二维数组中使用范围for语句时,需要使用auto关键字来声明变量。2.1 auto关键字auto是在C++11标准中引入的类型说明符,由编译器来确定auto变量的类型。其详细用法,请参考《C++中auto类型说明符的..

2020-07-15 14:18:53 24

原创 C++中的二维数组1

C++中的二维数组可以看做是数组的数组,第一个维度表示数组本身的大小,第二个维度表示其元素的大小。int ia1[3][4];以上代码定义的二维数组ia,包含了3个元素,每个元素又是一个包含了4个元素的数组,其元素类型是int。可以使用数组和数字两种方式对二维数组进行初始化。1 使用数组初始化int ia2[3][4] = {{0,1,2,3}, {4,5,6,7}, {8,9,10,11}};以上代码使用数组对二维数组ia2进行了初始化。在使用数组初始化,如果数组中的初始值少于

2020-07-14 10:52:45 22

原创 C++中string类的用法3

C++中的string类支持很多与容器类型类似的操作,比如迭代器操作。1 迭代器在C++中,使用迭代器可以访问容器或string对象中的元素,对于string对象来说,使用迭代器可以访问字符串中的字符。2 begin()和end()成员函数使用string对象的begin()函数和end()函数可以获取该对象的迭代器。其中begin()函数获取到的是指向第一个字符的迭代器,end()函数获取到的是最后一个字符的下一个位置的迭代器。对于end()函数获取到的迭代器,可以看成“没有什么意义的迭代

2020-07-13 10:08:51 41

原创 C++中string类的使用2

在《C++中string类的使用1》中提到了定义string对象的几种方法。该文中提到了方法都是将string对象定义为指定的字符串,其实还可以将string对象定义为指定字符串的部分内容,还可以将其定义为多个字符串的组合。1 将string对象定义为指定字符串的部分内容可以通过提到用string类构造函数或者string类的substr()成员函数,将string对象定义为指定字符串的部分内容。1.1 通过string类构造函数定义strings1("Hello World");st.

2020-07-11 11:38:49 30

原创 C++中string类的使用1

在C语言中,string字符串就是一个包含’\0’的字符数组。而C++中的string类是属于C++标准库类型,表示可变长的字符序列。1 string类与字符串的区别string类不但包含了字符串的内容,还包含了处理这些字符串的方法;string类知道字符串的大小,字符串的内容以及如何增加字符串长度,因此string类无需依赖字符串中的’\0’。2 相关头文件string类在string头文件中定义,因此在使用string类时需要包含该头文件。#include <string&g

2020-07-10 13:04:26 29

原创 C++中assert宏(2-2)

3 关闭assert()是否定义了预处理器变量NDEBUG,控制了assert宏的开关。默认情况下,没有定义预处理器变量NDEBUG,此时assert宏的处于开启状态,即该宏起作用,当定义了NDEBUG后,assert宏的处于关闭状态,即该宏将不再起作用。可以通过添加代码、修改解决方案配置和添加预处理器定义三种方式关闭assert。3.1 添加代码在“2.1 头文件”中提到,assert宏在assert.h/cassert头文件中定义。在包含该头文件的代码之前,使用如下代码定义NDEBUG。

2020-07-03 15:35:37 44

原创 C++中assert宏(2-1)

assert是一种预处理宏,由预处理器管理。因此,assert宏并不是定义在命名空间std中的。1 预处理在C++程序源代码被编译之前,由预处理器对C++程序源代码进行的处理。这个过程并不对程序的源代码进行解析,而是源代码分割或处理成为特定的符号以便支持宏调用。2 assert宏的使用2.1 头文件assert宏在assert.h或者cassert中定义,在使用该宏时需要包含该头文件。2.2 格式assert宏的格式为assert(表达式)其中,当表达式为假时,asse

2020-07-03 15:33:10 32

原创 C++中string与字符数组的互相转化

string是C++标准库类型,用于表示可变长的字符序列。1 字符数组转化为string1.1直接复制或者赋值通过直接复制或者赋值的方式,可以将字符数组转换为string。charach1[] = "Hello";stringstr1(ach1);stringstr2 = ach1; 1.2通过加法运算符或者复合赋值运算符 charach2[] = "World";str2 +=ach2;stringstr3 = str1 +" "+ach...

2020-07-02 11:12:26 71

原创 C++中的C风格字符串

1 简介C风格字符串指的是以‘\0’结尾的字符数组,是C++从C中继承而来。2 定义可以通过以下两种方式定义C风格字符串。charach1[] = "Hello";charach2[] = { 'H', 'e', 'l', 'l', 'o', '\0'};其中,ach1在结尾隐式地包含了’\0’,而ach2显示包含了’\0’。3 相关函数操作C风格字符串的函数在cstring头文件中定义,主要包含strlen()、strcmp()、strcat()和strcpy()四个...

2020-06-30 10:13:33 55

原创 C++中auto、decltype与数组

auto与decltype都是C++11中新引入的类型说明符。1 auto的用法使用类型说明符auto,实际上就是让编译器来分析表达式所属类型,所以auto定义的变量必须有初始值。auto i = 1;此时编译器会推断变量i的类型是int。2 decltype的用法decltype的用法请参考《C++中decltype的使用方法》。3 auto、decltype与数组的使用3.1 auto与数组整型数组a的定义如下:inta[] = { 1,2,3,4,5 };.

2020-06-28 09:59:24 71

原创 Kali Linux中Fierce的用法

Fierce显示指定域的DNS信息,是一个侦察工具,不能用于IP扫描或者DDos。Fierce可以使用几种不同的策略来快速扫描指定的域。通过扫描指定的域,可以获取子域的IP地址,而这些IP地址信息正是使用NMap等扫描工具所需要的。1 基本扫描使用-dns参数实现Fierce的基本扫描,其用法为fierce -dns 指定的域如图1所示图1 基本扫描从图1可以看出,fierce扫描指定域时,首先得到该域对应的DNS服务器,之后尝试对获取到的DNS服务器进行区域传输,参看服.

2020-06-28 08:53:17 115

原创 C++中error C2872不明确符号的处理方法

1 std命名空间在C++控制台程序中,使用的库函数基本上都来自std命名空间。在使用这些库函数时,需要通过作用域操作符来指定这些函数来自std,例如:int i;std::cin >> i;可以通过using声明使用std命名空间using namespace std;这样在程序中使用std中的函数或变量时,就可以直接使用。cin >> i;2 error C2872:“XXX”:不明确的符号通过using声明使用std命名空间的程序,如下所

2020-06-28 08:49:28 282 2

原创 C++中为类重载下标操作符(2-2)

2.2 常量对象当定义myClass类的常量对象时constmyClassc_my_class(5);“2.1 返回值是引用类型”中提到的重载下标操作符[]的返回值是引用类型,因此当有如下代码时不报错。inti = c_my_class[0];其报错信息为“error C2678: 二进制“[”: 没有找到接受“const myClass”类型的左操作数的运算符(或没有可接受的转换)”。此时需要再次重载下标操作符[],使其返回类型为const int&。const...

2020-06-20 09:29:44 56

原创 C++中为类重载下标操作符(2-1)

在C++中,下标操作符一般用于访问容器中的元素,用中括号[]表示。对于表示容器的类来说,可以通过重载下表操作符来访问容器中的元素。1 表示容器的类自定义一个表示容器的类,如下所示。classmyClass{public: intdim; int* arr;public: myClass(intn) { dim = n; arr = newint[n]; } ~myClass() { delete[]arr; ...

2020-06-20 09:26:20 50

原创 Kali Linux中dnsmap的使用

1 dnsmap介绍dnsmap主要用于收集指定域名的子域名信息。dnsmap的使用格式为dnsmap <指定域名>[选项]通过设置dnsmap的选项,可以为其指定子域名的字典、指定保存信息的文件、指定dns请求的间隔时间以及指定忽略结果中的某些信息等。2 指定子域名的字典通过选项-w指定dnsmap的字典,例如dnsmap XXX.com -w yourwordlist.txt以上指令表示使用自定义的yourwordlist.txt作为dnsmap穷举子域名的字

2020-06-09 10:28:34 84

原创 C++中decltype的使用方法

decltype是C++11中引入的新的类型说明符。编译器根据分析表达式或者函数返回值来分析其类型,但是需要注意的是,在分析类型的过程中,不执行函数或者表达式。1 分析表达式类型1.1 非常量表达式的情况inti = 0;decltype(i++) j = i;此时,j的类型是int,并且i和j的值都是0。1.2 常量表达式的情况当表达式是常量表达式时,decltype会返回表达式类型的常量。constintci = 1;decltype(ci) cj = ci;...

2020-05-29 12:35:20 88

原创 Kali Linux2中dnsdict6的用法

dnsdict6没有集成在Kali Linux2中,需要手动安装,安装的方法请参考《Kali Linux2中安装dnsdict6的方法》。1 dnsdict6介绍dnsdict6用于显示DNS服务器的下一级服务器记录、邮件服务器记录和服务器服务记录等信息,还可以提供内置的字典来枚举子域。2 主要功能参数dnsdict6的语法如图1所示。图1 dnsdict6的语法其中,主要的功能参数是-d和-S,分别用于显示DNS服务器的下一级服务器记录、邮件服务器记录和服务器服务记录。.

2020-05-27 14:03:50 74

原创 Kali Linux安装Mate桌面环境

1 Mate桌面环境Mate桌面环境是从GNOME2中派生出来的,比较适合配置比较低的电脑,属于轻量级的桌面环境。2 下载并安装Mate环境使用apt-get install指令下载并安装Mate包,如图1所示:图1 安装指令当有确认额外空间的提示后,输入“Y”,然后按回车按键,如图2所示。图2 确认额外空间之后等待安装完成即可,如图3所示。图3 安装完成3 将Mate环境设置为默认环境使用update-alternatives --c...

2020-05-24 12:33:09 188

原创 Vmware安装系统时显示“Intel VT-x”处于禁用状态的处理方法

1 虚拟机安装系统报错在使用vmware虚拟机安装系统时,有时会显示“此主机支持Intel VT-x,但Intel VT-x处于禁用状态。”如图1所示。图1 报错信息2 Intel VT-x介绍Intel VT-x是Intel运用虚拟化技术中的一个指令集,其中VT是Virtualization Technology即虚拟化技术的缩写。这种虚拟化技术可以让一个CPU工作起来就像多个CPU并行运行,从而使得在一台电脑内可以同时运行多个操作系统。只有部份Intel 的CPU才支持这种技术.

2020-05-24 12:27:58 148

原创 C++中error C2872不明确符号的处理方法

1 std命名空间在C++控制台程序中,使用的库函数基本上都来自std命名空间。在使用这些库函数时,需要通过作用域操作符来指定这些函数来自std,例如:int i;std::cin >> i;可以通过using声明使用std命名空间using namespace std;这样在程序中使用std中的函数或变量时,就可以直接使用。cin >> i;2 error C2872:“XXX”:不明确的符号通过using声明使用std命名空间的程序,如下所

2020-05-08 21:12:10 188

原创 Kali Linux2中安装dnsdict6的方法

1 dnsdict6介绍dnsdict6是一个用于获取网站信息的工具,通过对指定网站的扫描来显示域或者子域。dnsdict6还可以提取那些对用户限制或不可见的子域,是一个用来获取网站信息的强大工具。dnsdict6是集成在Kali Linux1中的,但是在Kali Linux2中没有集成。2 下载dnsdict6使用wget指令在指定网址下载dnsdict6,此时会显示错误。因为无法在...

2020-05-07 09:45:33 112

原创 Kali Linux中安装Xfce的步骤2-2

2.3 是否安装最新版本接下来就是安装的过程中发现系统中某些文件被修改过或者发现了更新的版本,询问是否安装新版本,如果直接按回车默认是不安装,如图8所示。图8 是否安装新版本2.4 安装成功最后,安装完成,如图9所示。图9 安装成功3 修改桌面环境通过update-alternatives指令修改桌面环境,如图10所示图10 修改...

2020-05-03 17:18:56 386

原创 Kali Linux中安装Xfce的步骤2-1

Kali Linux默认安装的是桌面环境是Gnome,可以通过以下方法在Kali Linux中安装Xfce,从而修改其桌面环境。1 Xfce介绍Xfce是XForms Common Enviroment的简写。其可以运行在类Unix操作系统中,提供轻量级的桌面环境。随着Xfce作桌面的系统越来越多,一些大型的Linux发型版本如Debian将其作为可选桌面,目前使用的Xfce4这个版本。...

2020-05-03 17:13:43 238

原创 C++中auto类型说明符的使用方法

auto是在C++11标准中引入的类型说明符,由编译器来确定auto变量的类型。1 auto基本用法在以下代码中int i = 1;int j = 2;auto k = i + j;当编译程序时,auto类型的变量k被编译器看做int类型。由于auto类型是通过初始值来判断类型的,所以在定义auto类型的变量时,必须对其进行赋初值。2 auto与const在以...

2020-05-02 20:37:25 74

原创 C++中printf()函数的用法10-10

printf()的参数格式如下所示%[flags][width][.precision][size]type其中,第四个域size在指定了type的取值范围。1 以其他格式打印字符当size域是hh,且type是d,i,o,u,x或者X时,表示以十进制整型、八进制、无符号或者十六进制的格式打印字符。charc = 0xf0;printf("%c", c);此时打印的...

2020-04-30 12:58:05 67

原创 C++中printf()函数的用法10-9

printf()的参数格式如下所示%[flags][width][.precision][size]type其中,第三个域[.precision]表示精度,是由一个小数点和一个非负的十进制数(precision)组成。1 指定输出字符串中字符的个数当输出的是字符串时,[.precision]中的precision表示输出的字符串中字符的个数。printf("%.5s", "H...

2020-04-27 21:53:31 72

原创 Kali Linux安装中文输入法

1 安装fctixfcitx是Free Chinese Input Toy for X的缩写,中文名叫做小企鹅输入法。该输入法为桌面环境提供一个灵活的输入方案,用来解决Linux下没有一个好的中文输入法问题。Kali Linux中没有自带fcitx,需要自行安装,其安装指令为apt-get install fcitx如图1所示。图1 在线安装fcitx2 安装谷...

2020-04-26 09:50:18 301

提示
确定要删除当前文章?
取消 删除