自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

转载 什么是NP问题,什么有是NP完全问题(NP-complete problem)

转自:http://blog.sina.com.cn/s/blog_6853584901017zw9.html,侵删。在算法复杂度分析的过程中,人们常常用特定的函数来描述目标算法,随着变量n的增长,时间或者空间消耗的增长曲线,近而进一步分析算法的可行性(有效性)。引入了Big-O,Big-Ω,来描述目标算法的上限、下限复杂度函数。用Big-Θ描述和目标函数同序的复杂度函数,即由Big-Θ既...

2019-04-29 09:57:52 3871

原创 博客声明

此博客是自己平时在学习时积累的一些笔记或转载的个人觉得比较好的文章,初衷是自己能够在学习过程中及时总结,方便日后查看,以及和同行一起交流,分享知识和经验,其中可能会有很多错误或不完备、不准确的地方,如果网友发现错误之处,望及时告知,定会尽快更正,以免对他人造成误导。 关于本博客转载的一些文章,定会注明出处,如有版权问题,请联系本人,定会及时删除,同时如果您转载了本博客的某些文章,希望同样能表明出...

2019-04-24 21:55:50 90

转载 VS创建DLL工程

文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。...

2019-09-16 08:57:39 240

转载 VS添加动态链接库的两种方法

一、VS中添加LIb库及头文件(外部依赖项)的步骤:1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。 然后添加工程引用的lib文件名:工程---属性---配置属性---链接器--...

2019-09-16 08:56:33 3715

转载 std::vector利用swap函数进行内存释放

转自:https://www.cnblogs.com/mazhenyu/p/8295316.html首先,vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。1、释放内存: empty()是用来检测容器是否为空的,...

2019-09-13 21:57:18 633

原创 C++中的多态之父类指针调用子类对象的虚函数失败,与子类、父类占用的内存大小以及指针步长的关系

原来使用父类和子类指针都指向子类对象,然后调用虚函数,但是在子类对象中加入一个inti;属性之后,宕机了。这是因为,父类指针p和子类指针c(加入inti之后),两个类所占的内存大小也不一样了,指针的数据类型是他所指向的内存空间的数据类型,因此p指针自加1的大小为一个父类对象的内存大小,而c指针自加1的大小为一个子类对象的大小。p与c的指针步长不一样。此时仍想利用p指针实现多态,...

2019-09-07 21:38:36 1439

原创 C++中的构造函数中为什么无法实现多态?与虚函数指针的关系?

首先,在父类的构造函数中无法实现多态。即在子类对象构造时,调用父类的构造函数时,执行的print()函数,仍然是父类中定义的虚函数print(),而不是子类中的虚函数print()。原因:这是因为在创建子类对象,调用父类的构造函数时,VPTR指针会从指向子类的虚函数表转而指向父类的虚函数表有关。当类A中含有虚函数时,在创建类A的对象时,编译器会为A创建一个VPTR指针,并创建一个虚...

2019-09-07 21:13:22 480

转载 C++中类的虚函数表、虚函数指针常见问题

虚函数属于类,还是对象?虚函数表属于类的,而不是对象的(系统很多对象那不是耗费了很多的内存)。 子类的虚函数表是共享父类的虚函数表吗?子类和父类 都有各自的虚函数表,并且子类的虚函数表继承自父类(一份拷贝,如果有相同的则覆盖父类的虚函数)。 虚函数表指针是属于类吗?虚函数表指针是属于对象的,创建对象才初始化的。同一个类的所有对象的虚函数指针值一样。 虚函数表存放在哪里?虚函数表在编译器确定...

2019-09-07 20:47:19 1109

原创 C++中多态的实现原理:虚函数表与虚函数指针

1-多态多态的实现效果:多态实现了同样的调用语句具有不同的表现形态。 多态成立的三个条件:继承、徐函数重写、父类指针指向子类对象。 多态的C++实现方法:virtual关键字,告诉编译器要执行多态;不要根据指针类型来判断如何调用对应的函数,而是要根据指针所实际指向的对象的类型来判断如何调用。 多态的理论基础:动态联编(if、switch、多态)、静态联编、根据指针实际指向的对象的类型来判...

2019-09-07 20:38:09 1729

原创 C++中多态相关的面试题

1.谈谈你对多态的理解,多态的现象?2.谈谈C++编译器是如何实现多态的?3.重写、重载的区别?多态在其中的现象,多态属于两个中的哪个?4.是否可以将类的每个成员函数声明为虚函数,为什么?答:不需要,因为普通的成员函数是在编译期间就确定了该函数的调用,而通过虚函数表指针VPTR调用重写函数,是在程序运行期间才进行的,因此需要通过寻址操作才能确定真正该调用的虚函数,所以虚函数的效率实...

2019-09-07 08:39:25 447

原创 C++中的继承、类内的函数重载、父类与子类之间的函数重写(多态和重定义)

继承:在子类对象构造时,需要先调用父类的构造函数对继承自父类的成员进行初始化。 在子类对象析构时,需要最后调用父类的析构函数对继承自父类的成员进行清理。 如果子类中的成员变量和父类中的重名,就用域作用符,父类名::变量名,来对父类中的同名成员变量进行访问。多态:为了能够对不同的继承类型,调用其下作用不同的同名函数,因此引入了多态的概念。根据(父类)指针指向的实际的对象类型来判断重写函...

2019-09-06 22:50:36 6853

原创 C++中类的多态基础

多态成立的三个条件:要有继承。 要有虚函数重写。 要有父类指针指向子类对象。多态的原理探究:联编:指的是程序模块、代码之间相互关联的过程。 静态联编:程序的匹配、链接是在编译阶段实现的,也称为早期匹配。重载函数使用的就是静态联编。 动态联编:程序链接在程序运行时进行,又称为迟绑定。switch和if语句就是动态联编,C++中类指针的多态也是。C与C++的编译:C与C++都是...

2019-09-06 16:59:49 154

原创 C++中利用纯虚函数提供公共接口,进行代码框架设计的使用

由于C++没有JAVA中的接口这一功能,所以通过含有纯虚函数的抽象基类来实现公共接口的功能,在接口类中只有函数原型的定义,没有任何数据和操作的定义。纯虚函数的定义如下所示: virtual void show_area() = 0; 通过抽象类的 纯虚函数 接口约定 (公共界面的约定)来实现具体的业务模型的填充(比继承这种代码复用的方式,更高一个级别的,属于框架接口的设计)。...

2019-09-06 15:13:01 771 1

原创 C++中类的多态、以及多态的产生与静态联编、动态联编的关系

多态、静态联编、动态联编:由于C++类的赋值兼容性原则,由于子类是一种特殊的父类,所以子类指针可以赋给父类指针。 由于在一般情况下,c++编译器进行的是静态联编,编译器会根据指针参数p的类型(子类指针还是父类指针?)去决定调用哪一个函数(指的是调用子类和父类中的同名普通函数),这一过程在代码的编译期间就确定下来了,这就是静态联编。 所以,如果不加virtual关键字,c++编译器统统会按照...

2019-09-06 09:34:27 181

原创 C++中的虚析构函数的作用

虚析构函数的作用:当直接delete子类的指针对象时,delete会先调用子类的析构函数,再调用父类的析构函数。 #include<iostream>using namespace std;class AA{public: AA(int a = 0) { this->a = a; } ~AA() { cout << "AA类的虚...

2019-09-06 09:07:55 359

转载 关于int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试

简单点说,int main( int argc, char* argv[] ) 中,argc是参数个数(arguments count),argv应该是参数数组(argument vector)。argv[0]中存放的是当前可执行文件的路径,argv[1]......argv[argc-1]中存放的是用户输入的命令行参数。如下方代码所示,当想要使用命令行方法,打开输入文件进行模型数据输入,即执...

2019-08-24 18:19:04 592

转载 #define的常见用法

先来讲一讲#define的优点与缺点:[优点]当在程序中想要修改某一个值得时候,而且这个值又在很多地方引用。这时候就能体现出宏定义的强大优点了。例如:#define LINK LED0 //定义LINK的灯为LED0因为在程序中我们可能很多地方要对LINK灯进行操作,当我们想换LINK灯的时候,直接将:#define LINK LED1这样就很方便了,不用一处处去...

2019-07-11 11:20:26 442

转载 32位和64位环境下,基本数据类型所占的字节数和位数

和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位。 un...

2019-06-27 16:22:27 374

转载 VS2015中,c文件为何无法进行单步调试到函数体内?

原因:Debug与Release的区别,Debug默认不会对程序做任何优化,而Release可能会把函数优化成内联的形式。来自:https://bbs.csdn.net/topics/391882692#include<stdio.h>intprint(intcount){inti=0;for(;i<count;++i){...

2019-06-24 21:53:34 2650

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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