2013年10月11日
摘要:
1、为什么要使用操作符重载?操作符和方法在本质上一样,使用操作符更符合人性化的描述。2、操作符重载分为 普通操作符重载和成员操作符重载,区别在于: a、普通操作符重载要访问对象的私有成员,因此要设计为friend,而成员操作符重载不需要; b、相比于普通操作符重载,成员操作符重载,少了一个形参,因为成员方法总是与对象绑定使用的,被绑定的对象就是操作符的第一个参数;示例代码: 1 #include "StdAfx.h" 2 3 class Point 4 { 5 private : 6 int x; 7 int y; 8 9 public :10 Point ()...
阅读全文
posted @ 2013-10-11 19:59
Andy Niu
阅读(294)
推荐(0)
2013年9月27日
摘要:
今天在使用Linq的时候,查询很慢。仔细查看在知道,在in的后面跟的是个方法,这个方法返回一个集合。Linq只是语法糖,内部进行了封装。内部的实现也是遍历集合,找到满足条件的元素。在in的后面使用方法返回的集合,相当于Linq在遍历的时候,每次都执行这个方法。因此,需要注意:在遍历的内部,不要调用方法,返回一个集合,而应该是在遍历之前,保存一下方法返回的集合,遍历的时候使用。
阅读全文
posted @ 2013-09-27 17:38
Andy Niu
阅读(264)
推荐(0)
摘要:
父类引用指向子类对象,如何访问子类的属性?1、第一种办法最简单,强制类型转化为子类。2、父类引用指向子类对象,由于当前引用为父类,只能访问父类的字段和方法,但是根据多态性可以访问子类的方法,在这个方法里可以访问子类的属性。变量有两个类型:表面类型和真实类型。调用方法的时候,会根据方法拥有者的真实类型决定调用哪个方法。
阅读全文
posted @ 2013-09-27 17:33
Andy Niu
阅读(441)
推荐(0)
摘要:
1、程序执行过程中,CPU在做事情,什么时候CPU空闲呢?CPU等待用户输入,或者等待某件事发生,或者线程Sleep的时候,CPU空闲,无事可做。2、对于一个线程,Sleep5秒钟与做事5秒钟是一样的,都会阻塞线程,当前线程不会往下走,也不能及时相应。区别是,CPU的使用率不一样。Sleep5秒,CPU空闲,使用率为0%,做事情5秒,CPU一直忙,这5秒钟使用率为100%3、当前线程串行做事5秒 等价于 当前线程Sleep5秒,同时重启一个线程做事情5秒钟。
阅读全文
posted @ 2013-09-27 17:25
Andy Niu
阅读(488)
推荐(0)
2013年9月25日
摘要:
1、建立矩阵,记录任意两点间的直接距离;2、两个集合,一个集合记录到每个点的最短路径,一个记录前驱节点;3、主循环,每次找当前点与其他点的距离,记录下最短距离和前驱节点,然后看看通过前驱节点和最短路径是否更近,修正最短路径和前驱节点。
阅读全文
posted @ 2013-09-25 18:33
Andy Niu
阅读(441)
推荐(0)
2013年9月23日
摘要:
中缀表达式转化为树结构,难点是中缀表达式中有括号和优先级。算法分解为以下几个步骤:1、首先去除括号和优先级,也就是把中缀表达式转化为后缀表达式;2、根据后缀表达式,可以生成二叉树;3、把二叉树转化为多叉树。
阅读全文
posted @ 2013-09-23 19:24
Andy Niu
阅读(662)
推荐(0)
摘要:
1、为什么要把中缀表达式转化为后缀,前缀?计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。2、计算机如何计算后缀,前缀表达式?计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。3、中缀表达式如何转化为后缀,前缀表达式?转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优
阅读全文
posted @ 2013-09-23 17:21
Andy Niu
阅读(12028)
推荐(3)
2013年9月22日
摘要:
任何一个技术或者知识点,都是为了解决某个问题。也就是都有他的使用场景,或者说为什么搞出这种技术。1、解决的问题:现实生活中的例子,要使用一个工具,必要把工具放在这里,或者说我有这个工具。工具只能放在一个地方,但是可能在多个地方使用,只要说,我有这个工具就行了。2、解决办法:把工具放在一个地方,就是定义。说明我有这个工具,就是声明。3、有时候,要使用各种各样的工具,就要声明说,我要这些工具。把这些声明放在一个文件中,这个文件就是头文件。4、C++编译可以分别编译,编译过程分为:Compile和Link,在Compile的时候,使用的东西只要有声明就行了,会生成obj文件,在Link的时候,需要知
阅读全文
posted @ 2013-09-22 17:21
Andy Niu
阅读(1310)
推荐(1)
2013年9月18日
摘要:
1、明确谁是主体,前面是定语,后面是主体。指针函数:返回指针的函数函数指针:指向函数的指针2、函数类型函数包括:函数名,返回类型,形参表,修饰符。函数类型表明一类函数,这一类函数的返回类型和形参表相同,而与函数名无关。一个函数,把函数名去掉,就是函数类型。比如:int Fun (int a) --- 函数Fun,函数Fun的类型为 int (int a);对于函数类型:在返回类型和形参表之间,加上一个函数名,就表示一个特定的函数。在返回类型和形参表之间,加上一个指针名,表示指向这一类函数的指针。3、区分int * Fun(int a ) :函数名为Fun,返回类型为 int*int (*Fun
阅读全文
posted @ 2013-09-18 16:47
Andy Niu
阅读(530)
推荐(0)
摘要:
修改指针有两个概念:1、修改指针使其指向另一个对象2、修改指针指向的对象的内容因此指针与const的组合有两个概念:1、指向常量的指针2、指针常量(不允许再指向其他对象)1 const int a =98;2 const int * ap1 = &a; // 指向常量的指针3 int const * ap2 = &a; // 指向常量的指针4 int * const ap3 = &a; // 指针常量,不允许ap3再指向其他对象简单记忆:const在*的左边,修饰常量,指向常量的指针;const在*的右边,修改指针,不允许指针再指向其他对象。
阅读全文
posted @ 2013-09-18 15:07
Andy Niu
阅读(315)
推荐(0)