![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
zxa1334
这个作者很懒,什么都没留下…
展开
-
类的成员函数,构造函数等函数之间的关系
1、成员函数包括:构造函数,析构函数,拷贝构造函数,赋值操作符重载,取地址操作符重载,const操作符修饰的操作符重载2、友元函数不属于成员函数 ...原创 2018-11-10 15:23:43 · 2701 阅读 · 0 评论 -
设计模式介绍
1、在介绍设计模式之前应该明白什么是模式:在一定环境中解决某一问题的方案,包括三个基本要素:问题,解决方案,环境(固 定套路)2、设计模式的概述:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结3、设计模式的优点:可重复使用代码,让代码可以更好地被他人理解,保证代码的可靠性,使代码编制真正工程化,是软件工程 的基石4、设计模式分类:...原创 2018-07-30 08:38:27 · 100 阅读 · 0 评论 -
编写一个函数。求一个数的二进制表示中的1位的个数
/********************************编写一个函数。求一个数的二进制表示中的1位的个数,例如9的二进制表示位1001,1位的个数为2*********************************/#include <iostream>using namespace std;int main(){ int n; int ...原创 2018-07-21 08:28:28 · 1678 阅读 · 0 评论 -
用STL中multimap编写简易的通讯录
#include <iostream>#include <string>#include <map>using namespace std;//用户class User{public: User(int id, string name) { this->id = id; ...原创 2018-07-28 15:02:20 · 241 阅读 · 0 评论 -
在C++中,引用的详解
1、对于‘’&‘,这个字符’,大家都很熟悉,在C语言中,它是取地址的意思,在位运算中,它是‘与’的意思,今天要说的就是在C++中,引用的意思2、对于我这个一直用C语言编程的小白来说,一看到&这个字符便会想到取地址的意思,以至于很多时候都不理解为什么在定义函数的形式参数时,要定义成“取地址”,后来经查资料 ,才知道是取地址的意思,然而,在看到这个字符时,首先想到的还是取地址的意思...原创 2018-07-19 14:50:59 · 290 阅读 · 0 评论 -
return ,break,continue三者在循环体中的区别
1、return 是结束所有的循环,直接终结程序的运行2、break 是结束本层循环,但外面的一层循环没有结束3、continue 是既未结束本层循环,又未结束外层循环,仅仅是忽略本次循环注:注意本层与本次的区别...原创 2018-07-19 08:29:25 · 1305 阅读 · 0 评论 -
实现数组的倒序问题
//将一个字符数组倒过来asdf变为 fdsa#include <iostream>#include <cstring>using namespace std;void dao_order(char *n){ char tmp[20] = {0}; cout << strlen(n) << endl; int i;...原创 2018-07-18 20:39:24 · 2402 阅读 · 0 评论 -
C++读书笔记—int main(int argc ,char *argv[])的解析
1、main()的标准形式应该为 int main(int argc ,char *argv[]) argc 表示可执行文件需要带有参数的个数;argv是参数列表,一种典型的指针数组,其中第0个参数是程序的全名 eg: #include <iostream>using namespace std;int main(int argc,char *arg...原创 2018-07-17 16:47:23 · 250 阅读 · 0 评论 -
C++读书笔记—指针数组
1、指针数组:看到这个四个字,可以联想到前面学到的字符串数组,而在字符串数组中盛放的是字符串,故在指针数组中存放的 一个一个的指针;而考虑到这一步,就不得不提到指针数组的大小问题,在字符串数组中,数组的大小是由数组里的元素字符 串的大小所决定的,但是在指针数组中,因为里面的元素是指针,考虑到指针的特性(地址,可以想象为一把钥匙),可知指针 数组的大小并不...原创 2018-07-17 15:52:04 · 142 阅读 · 0 评论 -
取出文件名的后缀名
注:在有的编译器中可以直接采用strrev进行字符串反转/*********************************取出文件kkk.jpg的后缀名jpg***********************************/#include <iostream>#include <cstring>using namespace std;int ma...原创 2018-07-17 14:43:45 · 329 阅读 · 0 评论 -
单例模式
1、作用:保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象2、单例模式的构造图: 3、实现环境: (1)在多个线程之间,比如初始化一次socket资源 (2)在整个程序空间使用全局变量,共享资源 (3)大规模系统中,为了性能的考虑,需要节省对象的创建时间4、构造单例模式的常用步骤: ...原创 2018-07-30 10:29:05 · 717 阅读 · 0 评论 -
简单工厂模式
1、静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。2、模式中包含的角色及其职责: 1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负...原创 2018-07-30 10:38:21 · 152 阅读 · 0 评论 -
友元函数、友元类、访问私有数据成员、友元关系[C++]
友元函数(friend function)1. 什么是友元函数? 一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员2. 友元函数的用处体现在哪里? 2.1 使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类 2.2 用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑关系3....转载 2018-11-01 20:45:30 · 6207 阅读 · 0 评论 -
用于string对象的技术和用于字符串数组的技术进行了比较
//用于string对象的技术和用于字符串数组的技术进行了比较#include <iostream>#include <string> //string 与cstring 是两个不同的头文件#include <cstring>using namespace std;#pragma warning(disable:4996)int main()...原创 2018-10-21 22:06:02 · 216 阅读 · 0 评论 -
在VS中使用cstring库函数时,遇到行错误 C4996 ‘strcpy’:
严重性代码说明项目文件 行错误 C4996 ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Test f:\cwor...转载 2018-10-21 21:23:58 · 430 阅读 · 0 评论 -
虚函数表
class Test{public: int a; int b; virtual void fun() {} Test(int temp1 = 0, int temp2 = 0) { a=temp1 ; b=temp2 ; } int getA() { return a; }...原创 2018-09-03 09:06:15 · 157 阅读 · 0 评论 -
C++中四种类型转换方式
C++中四种类型转换方式C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a,但是c 风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比如你可以把一个指向const对象的指针转换成指向非 const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针,这两种转换之间的差别是巨大的,...转载 2018-08-03 09:32:34 · 2812 阅读 · 0 评论 -
C/C++宏定义详解
转载地址:https://www.cnblogs.com/fnlingnzb-learner/p/6903966.htmlC++宏定义详解一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得...转载 2018-08-09 14:36:04 · 532 阅读 · 0 评论 -
设计模式之建造者模式
1、概念: Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。对象的创建:Builder模式是为对象的创建而设计的模式- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象-...原创 2018-07-30 11:03:39 · 121 阅读 · 0 评论 -
设计模式之抽象工厂模式
1、概念:抽象工厂模式是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。2、模式中包含的角色及其职责 抽象工厂(Creator)角色 抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。 具体工厂( Concrete Creator)角色具体...原创 2018-07-30 10:57:04 · 120 阅读 · 0 评论 -
设计模式之工厂模式
1、概念:工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。2、抽象工厂(Creator)角色 工厂方...原创 2018-07-30 10:49:03 · 106 阅读 · 0 评论 -
后台运行shell命令eog,并用pkill关闭
注:pkill与kill的用法区别: pkill 是按照shell名称杀死进程,而kill 是按照PID杀死进程, 在下面的程序中存在的一个小问题是:当调用eog命令后,这时鼠标跳到图片预览器上工作,需要在原终端界面上单击一下,使之回到终端界面上工作,在按下enter便可以杀死进程,关闭图片预览器/********************************...原创 2018-07-17 09:59:53 · 1126 阅读 · 0 评论 -
C++读书笔记—位逻辑运算编程示例
/*****************************位逻辑运算:(1)使用整型变量存放寄存器(32bit)的当前值(假设为0xFFFFFFFF)(2)把这个寄存器第5位、第10位、第22位清零,其他位的值保持不变(3)把这个寄存器第5位置位(4)把这个寄存器第18位翻转(5)显示最后的转换结果********************************/#include <ios...原创 2018-06-20 16:16:27 · 278 阅读 · 0 评论 -
C++读书笔记—逻辑运算符的应用
(1)逻辑与运算时,如果第一个操作数为假,结果为假,第二个操作数不会执行(1)逻辑或运算时,如果第一个操作数为真,结果为真,第二个操作数不会执行#include <iostream>using namespace std;int main(){ int a= 5,b =10,c = 15,z =0; (a*z)&&(b = 22); co...原创 2018-06-20 15:14:47 · 249 阅读 · 0 评论 -
C++读书笔记—const 与define 定义常量时的区别
1、define只是用来做文本宏替换,define常量的生命周期止于编译期,它存在于程序的代码段,在实际程序中只是一个常数; 而const存在于程序的数据段,并在堆栈中分配了空间2、define定义的常量在程序运行时不可被调用、传递,因为define没有给名字分配空间,仅仅只是给一个常数起了一个名字; 而const常量在程序中确确实实存在,所以在程序运行时可以被调用、传递。3...原创 2018-06-24 09:31:49 · 423 阅读 · 0 评论 -
C++读书笔记—使用指针技术实现内存块数据的移动
/***************************************使用指针技术实现内存块数据的移动:要求从键盘输入一个字符存放到某个内存空间中,然后把输入的字符串最后一个字符调整到字符首部,其他字符以此向后移输出。比如输入“asdfgh”,输出"hasdfg"实现方法:(1)定义指针,分配内存空间(2)输出字符串到指定的空间(3)处理字符串(4)输出字符串(5)释放分配的内存空间**...原创 2018-06-24 09:14:50 · 1198 阅读 · 0 评论 -
C++读书笔记—new/delete和malloc/free的比较
区别:1、malloc与free是C/C++语言的标准库函数,new/delete是C++的运算符2、new运算符根据数据的类型,自动决定其大小,不使用sizeof运算符,而malloc要指定分配内存空间的大小3、new 返回指向此类型的指针,不用进行强制指针类型转换。malloc返回指向void* 类型的指针,需要进行强制类型转换4、new是一个分配内存并进行初始化的过程,例如,char *p ...原创 2018-06-23 22:08:51 · 180 阅读 · 0 评论 -
C++读书笔记—动态内存空间的释放函数delete()的注意点
1、delete运算符的功能是用来释放new创建的对象或一般类型的指针,其标准格式如下: delete <指针名>; 如:int *p = new int ; delete p; delete也可以用来释放使用new创建的对象数组,格式如下: delete [] 指针名; 如:int *p = new int[50]...原创 2018-06-23 22:01:12 · 796 阅读 · 0 评论 -
C++读书笔记—动态内存空间的申请函数new()的注意点
1、在使用C++语言编写程序时,建议使用new和delete两个运算符,new和delete不是系统函数,因此使用new和delete的代码比使用malloc和free工作效率更高2、new运算符的语法标准格式: 指针 = new 数据类型; 其中指针指向的数据类型应该与new后面的数据类型相同,如: int *p = new int ; 此式表示系统自...原创 2018-06-23 21:50:41 · 1446 阅读 · 0 评论 -
C++读书笔记—malloc()函数的注意点及使用示例
1、malloc()函数的头文件是stdlib.h,其函数声明如下: void* malloc(size_t size); 其中参数size_t size表示动态内存分配空间的大小,以字节为单位。 size_t 是typedef重定义的类型,重定义这样数据类型的作用就是让使用者一目了然,指示使用者这个参数表示一个长度,在 size后加上t,表示是整型相...原创 2018-06-23 17:35:26 · 32209 阅读 · 2 评论 -
C++读书笔记—void 和void*的区别
1、函数的返回值如果是 void 类型的,则表示这个函数的执行结果是没有返回值的;2、函数的返回值如果是 void* 类型的,则表示返回一个内存地址,这个内存空间存放的数据类型是void类型的,即无类型的,也可以说是万能型的3、在实际开发中,void* 使用时最终都要强制转换成某种明确的数据类型...原创 2018-06-23 16:45:15 · 1157 阅读 · 0 评论 -
C++读书笔记—指针变量的定义与初始化
在了解指针变量与初始化之前,首先要弄清楚一点:什么是指针?1、指针的内容实际上是一个地址,我们只要给指针赋值一个地址,它将会指向这个地址表示的内存空间,这也是指针的作用,我们要访问某个地址时,这个指针必须合法,否则容易出现系统崩溃,从而出现段错误。比如一个指针指向11楼的某个房间,但是该楼层只有10层,若贸然进去,则会出现严重后果2、指针变量:就是指向某个内存地址的变量 char *p_ch...原创 2018-06-23 16:39:14 · 4217 阅读 · 0 评论 -
C++读书笔记—常用运算符与表达式
1、赋值运算符(1)、使用赋值运算符时,要保持左值与右值的类型一致,如int a = 15.6(x),(2)、当两侧类型不一致时,容易发生两种转换:隐式转换,显示转换(强制类型转换),其中隐式转换有五点注意事项: ~将浮点型赋值给整型变量时,舍弃其小数部分 ~将整型数据赋值给浮点型变量时,数值不变,但以指数形式存储到变量中 ~将一个double型数据赋给float变量...原创 2018-06-21 09:28:50 · 197 阅读 · 0 评论 -
C++读书笔记—常量指针的使用注意点
在使用常量指针时,应该要明确以下3个问题:● 指针 (地址) 本身是常量?● 指针所指向的内容是常量?● 指针本身和所指向的内容是常量?常量指针通常有以下几种形式:(1) char * const a;(2) char const *a;(3) const char *a;(4) const char *const a;第(1) 种形式表示字符指针a本身是常量,但是a所指向的内存空间数据是可以...原创 2018-06-24 09:54:10 · 132 阅读 · 0 评论 -
C++读书笔记—数组元素个数的确定
问题:请读者编写一个表达式确定一个数组元素的个数,目前只知道这个数组名为a,它的数据类型等其他信息都在一个黑匣子中定义,无从得知答:我们只需把问题转换为求数组元素a[0]占用空间的大小上,a[0]占用的空间大小很好确定,即sizeof(a[0]),这就是sizeof(int)的等价条件,所有通过数组名确定元素个数的表达式如下: int len = sizeof(a)/sizeof(a[0])...原创 2018-06-24 15:54:09 · 8637 阅读 · 0 评论 -
C++读书笔记—闰年的判断
/*****************************判断是否是闰年:(1)闰年应能被4整除(如2004年是闰年,而2001年不是闰年)(2)但不是所有被4整除的年份都是闰年。在能被100整除的年份中,又同时能被400整除的年份才是闰年(如2000年是闰年)(3)能被100整除而不能被400整除的年份(如1800年,1900年,2100年)不是闰年**********************...原创 2018-06-20 15:07:04 · 353 阅读 · 0 评论 -
C++读书笔记—有关算数运算符的编程
/*****************************编写一个程序实现输入一个整数,把这个整数倒过来输出,比如输入12345,输出54321********************************///第一种简单事例/*#include <iostream>using namespace std;int main(){ int a,b,c,d,e; int n; int ...原创 2018-06-20 10:28:29 · 145 阅读 · 0 评论 -
C++读书笔记—算数运算符的注意点
除%外,其他算术运算符的两个操作数可以是整型相关类型和实型(float和double型)的混合类型,运算结果的数据类型是两个操作数的数据类型中具有较高级别的数据类型例:#include <iostream> using namespace std;int main(){ char a = 127; short b = 255; int c = 32768; float d = 456...原创 2018-06-19 22:56:46 · 122 阅读 · 0 评论 -
for()循环函数的注意点
下面是关于for ()循环的例子#include <iostream>using namespace std;int main(){ int n; int i =0; int sum = 0; cout << "please input the number of n :" << endl; cin >> n; for( ; i <= n ; ...原创 2018-06-19 15:41:22 · 14566 阅读 · 0 评论 -
sizeof()函数的注意点
1、sizeof()函数的返回值在某些编译器中不能直接与int 比较,下面是一个例子#include <iostream>using namespace std;//将字符串中的小写改为大写void small_big(char *c){ int i; cout << "...." << sizeof(c) << endl; for(i =0; i ...原创 2018-06-19 09:36:46 · 1541 阅读 · 0 评论