摘要: 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口向下转型:父类引用的对象转换为子类类型称为向下转型。前者是一个向上转型,Animal dog 引用指向new Dog();子类对象当成父类对象,只能调用父类的成员,如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override)。这个调用过程就称为“动态绑定”。转型需要注意的问 阅读全文
posted @ 2013-06-21 21:17 夜雨阑珊 阅读(42940) 评论(1) 推荐(14) 编辑
摘要: 再看面试题时 出现了一个字符串左右移动循环的问题,看了一遍还没有弄懂,就发了点时间来看了一下字符数组与字符指针的问题,最终还是得到解决,呵呵,只要肯发功夫,还是会有收获的 例如:有一组char的字符串:abcdefghijk 。你要循环左移3位变成ijkabcdefgh(也有写出ijkabcdefghi);或右移三位变成defghijkabc(也有写成cdefghijkabc); 首先我们来解决字符串循环左移的问题:方法一:利用已有的字符串函数。#include<stdio.h>#include<string.h>void rightloop(char *a, int 阅读全文
posted @ 2013-06-21 21:16 夜雨阑珊 阅读(1432) 评论(0) 推荐(0) 编辑
摘要: 测试覆盖率之一——测试覆盖率分类关于覆盖率,网络上最常见的两个词应该是“测试覆盖率”(Test Coverage)和”代码覆盖率“(Code Coverage)。今天就来探探这两个东西。在测试里面,一般会将测试覆盖率分为两个部分,即”需求覆盖率“和”代码覆盖率“。可以看到,代码覆盖率其实是测试覆盖率的一部分而已。其中,最常讨论和关心的是”代码覆盖率“,代码覆盖率又分为程序语句和代码行覆盖,分支覆盖和条件覆盖。对于这些概念,我们逐个解释。需求覆盖率:如果需求已经定义好,这个时侯我们就需要考虑需求覆盖率了。这个时候需要注意的是,这里的需求不仅仅是指功能需求,还要包括性能需求。衡量需求覆盖率的最直观 阅读全文
posted @ 2013-06-21 21:14 夜雨阑珊 阅读(3643) 评论(0) 推荐(1) 编辑
摘要: 指针悬挂指针是C/C++语言中一种特殊的数据类型,它的值是一块内存区域的地址。使用指针要求,它的值必须是指向一块分配给你使用的地址,且使用的内存不能超过它分配时的大小。例如:char * p = new char[10];这样的代码就给p分配一块有10个字节的内存,并把这块内存的开始地址放在p中。用户在使用时,必须保证引用的内存必须在以p开始到这块内存结束的范围内。闲话少叙,说说指针悬挂。所谓指针悬挂是指指针指向了一块没有分配给用户使用的内存。指针悬挂一般由以下几种情况: 指针未初始化这不仅仅是初学者才会犯的错误。尤其是全局指针变量,不初始化就使用的情况很正常,考虑如下代码: char * g 阅读全文
posted @ 2013-06-21 21:13 夜雨阑珊 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用=进行赋值操作,==进行比较,+做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须包含头文件<string>。如下:#include<string>//注意这里不是string.hstring.h是C字符串头文件1.声明一个C++字符串声明一个字符串变量很简单:stringS 阅读全文
posted @ 2013-06-21 21:11 夜雨阑珊 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 什么是野指针? 一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这个在厨房的小孩比较淘气,他在走出厨房时自己将蛋糕吃了,没能带出来。而在卧室的没有吃到蛋糕,所以不肯完成他的作业。结果母亲却不知道卧室的孩子没有吃到蛋糕,还以为作业完了。结果第二天她就被老师召唤到办公室了。事情麻烦了。 这样,那个在卧室的孩子就是野指针了,因为他没有得到应得的蛋糕,不能完成母亲交给他的作业。 这就是c中所讲的野指针。上面的小剧本不过演示了一种最基本的野指针的形成过程。更容易出现... 阅读全文
posted @ 2013-06-21 21:10 夜雨阑珊 阅读(516) 评论(0) 推荐(0) 编辑
摘要: clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: clock_t clock(void) ; 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义: #ifndef _CLOCK_T_DEFINED typedef long clock_t; #define _CLOCK_T_... 阅读全文
posted @ 2013-06-21 21:08 夜雨阑珊 阅读(2061) 评论(0) 推荐(0) 编辑
摘要: 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName ); 其中各参数的意义 LPCTSTR lpAppName 是INI文件中的一个字段名. LPCTSTR lpKeyName ... 阅读全文
posted @ 2013-06-21 21:00 夜雨阑珊 阅读(803) 评论(0) 推荐(0) 编辑
摘要: 数组指针和数组引用做参数的区别(是否能够限定数组大小、数组降价) template<class T>void func1(T &, T &) {}template<class TT>void func2(TT, TT) {}int main(){ int a[10], b[10], c[20]; func1(a, b); //OK, 数组引用 func1(b, c); //ERROR,形参为引用时, 数组不能转换为指针, //b,c类型(数组长度)不匹配,参考C++ Primer P538 func2(a, b); //OK,作为数组指针 func2(b 阅读全文
posted @ 2013-06-21 20:57 夜雨阑珊 阅读(7854) 评论(0) 推荐(0) 编辑
摘要: 1用单引号括起的字符实际代表一个整数,整数值对应于该字符在编译器中采用的字符集对应的序列值;双引号括起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符和‘\0’初始化。对于'yes'这种形式的表示,不同的编译器采取的方式不同,但大都理解为"一个整数值,由y e s 所代表的整数值按照特定编译器实现定义的方式组合得到",vc采用用后一个字符覆盖前一个字符,最后得到的是最后一个字符的值2词法分析中的"贪心法则"----每一个符号应该包含尽可能多的字符,所以n-->0的含义是 n-- >0,而不是n- -& 阅读全文
posted @ 2013-06-21 20:56 夜雨阑珊 阅读(272) 评论(0) 推荐(0) 编辑