上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 58 下一页
  2013年11月25日
摘要: 1、使用场景 代码提供者告诉客户(代码使用者),这个方法不会修改对象的内容,请客户放心使用。2、代码提供者,尝试在const成员方法中修改对象内容,编译报错。在成员方法中,this是const 指针,不允许修改this指向其他内容。const 成员方法,限制了this为指向const对象的const指针。3、const对象只能调用const成员方法,因为non-const成员方法可能会修改对象内容,这与const对象矛盾。4、non-const对象可调用const成员方法,也可以调用non-const成员方法。5、为什么可以做到上面的约束? 如果B是A的别名(包括引用,指针),则B不能放大.. 阅读全文
posted @ 2013-11-25 19:33 Andy Niu 阅读(232) 评论(0) 推荐(0)
  2013年11月22日
摘要: 1、解决什么问题? C++ 编译器是单独,分别编译的,每个cpp文件,进行预编译(也就是对#include,define 等进行文本替换),生成编译单元。编译单元是一个自包含文件,C++编译器对编译单元进行编译。考虑,头文件A.h被多个cpp文件(比如A1.cpp,A2.cpp)包含,每个cpp文件都要进行单独编译,其中的A.h部分就会被多次重复第编译,影响效率。2、怎么解决? 把A.h以及类似A.h这样的头文件,包含到stdafx.h中(当然也可以是其他文件),在stdafx.cpp中包含stdafx.h,设置stdafx.cpp文件的属性,预编译头设置为 创建。对于原先包含A.h的cp.. 阅读全文
posted @ 2013-11-22 16:42 Andy Niu 阅读(12468) 评论(0) 推荐(1)
摘要: C++ 对象没有显式初始化,结果是什么?首先考虑非静态对象1、方法内的局部对象: a、类类型:调用default构造方法 b、基本类型:值不确定2、类中的数据成员: a、类类型:调用default构造方法 b、基本类型:值不确定注意:Person p; 调用default构造方法,不能使用 Person p(),对于Person p(),编译器会认为声明一个方法。当然也可以使用 Person p = Person();考虑静态对象:1、方法内的局部对象: a、类类型:调用default构造方法,注意:类对象中的基本类型对象,即使没有显式初始化,也会初始化为0 b、基本类型:02、类... 阅读全文
posted @ 2013-11-22 14:13 Andy Niu 阅读(786) 评论(0) 推荐(1)
  2013年11月21日
摘要: 正则表达式匹配,包含两个东西,一个是表达式,一个文本。NFA(Nondeterministic Finite Automaton),不确定有穷自动机,表达式主导,NFA去吃文本,贪婪算法吃下去,如果因为前面吃得太多,导致后面没的吃(后面匹配失败),前面吃的要吐出一点,后面还匹配不成功,前面再吐出一点... 阅读全文
posted @ 2013-11-21 19:36 Andy Niu 阅读(507) 评论(0) 推荐(0)
摘要: 1、引用一个DLL,需要指定路径,复制本地的意思是 把这个DLL复制到exe的Debug目录(调试的时候)。2、复制到本地的动作是在生成的时候执行的,清理的时候会删除。3、从外部引用一个DLL,不复制到本地,生成没问题,运行会报错,因为,Debug目录没有DLL。4、每次清理会删除Debug目录的DLL,重新生成会再次复制到Debug目录,为了避免这种情况,可以:把DLL放到Debug目录,直接引用Debug目录下的DLL,同时复制本地设为false5、如果引用一个工程,复制本地必须要设置为true,只有这样,修改工程导致的结果才能体现出来。同时,引用一个工程,这个工程会把自己所需要的DLL, 阅读全文
posted @ 2013-11-21 18:23 Andy Niu 阅读(7154) 评论(0) 推荐(0)
摘要: 小人:文件被其他人签出对号:文件被自己签出锁:文件已经被签入加号:新增加一个文件 阅读全文
posted @ 2013-11-21 18:13 Andy Niu 阅读(905) 评论(0) 推荐(0)
摘要: 1、什么是析构方法? 析构方法与构造方法互补。2、为什么设计析构方法? 构造方法创建一个对象,对象内部往往还会申请一些资源。设计析构方法的目的是 释放资源,同时销毁自身。3、析构方法可以认为分为两个:显式析构方法和合成析构方法。 显式析构方法用于:释放对象申请的资源,也就是指针指向的对象。 合成析构方法用于:销毁自身,对于对象的每一个数据成员(不包括继承的数据成员),进行析构。继承的数据成员通过父类的合成析构方法进行析构。4、即使编写了显示析构方法,合成析构方法仍然会运行。首先使用显式析构方法释放资源,再调用合成析构方法销毁自身。5、如果对象没有申请资源,显式析构方法不需要做任何事,也... 阅读全文
posted @ 2013-11-21 17:46 Andy Niu 阅读(2807) 评论(0) 推荐(0)
  2013年11月19日
摘要: 1、什么是异常? 异常就是程序出现了错误。2、为什么设计异常? 库(任何代码)的提供者检测出运行时出现的错误,但是不知道怎么处理。而库的使用者(客户)知道怎么处理这些错误,但是不知道何时发生(如果很明确知道何时发生,就可以在客户端处理了,不再留给库)。简单说,设计异常的目的就是:问题检测与问题处理相分离。3、使用错误码也可以表示错误,但是不好。为什么? a、缺乏语义; b、可以被忽略,异常不能被忽略,抛出异常不处理,会导致程序终止; c、缺乏调用堆栈的上下文; d、错误码必须一级一级传回去,异常可以跳级。4、catch是最先匹配,而不是最优匹配。因此,范围小的异常(具体的异常)放在... 阅读全文
posted @ 2013-11-19 10:11 Andy Niu 阅读(402) 评论(0) 推荐(0)
  2013年11月15日
摘要: 原文:http://www.cnblogs.com/dolphin0520/archive/2011/08/25/2153720.html二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序遍历按照“根结点-左孩子-右孩子”的顺序进行访问。 1.递归实现void 阅读全文
posted @ 2013-11-15 17:49 Andy Niu 阅读(199) 评论(0) 推荐(0)
摘要: 原文:http://www.cnblogs.com/dolphin0520/archive/2011/08/26/2155202.html单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。在弄清楚如何求算单源最短路径问题之前,必须弄清楚最短路径的最优子结构性质。一.最短路径的最优子结构性质 该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。 假设P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,则有P(i,j 阅读全文
posted @ 2013-11-15 17:43 Andy Niu 阅读(659) 评论(0) 推荐(0)
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 58 下一页