摘要:选择排序如下:[代码]冒泡排序如下:[代码]
阅读全文
摘要:看到编程思想第八章,关于const和指针的种种关系,还是要在这里主要说下,以备后用。1. 指向const对象的指针。形式:const int *p;说明:此处的p是一个普通指针,它指向的是const int对象。也就是说,此处的const限定的是指针p所指向的对象,而指针p本身并不是const,所以在定义时不需要初始化。我们可以随时修改指针p的值,但却不能修改p指针所指向的对象。比如说函数FILE...
阅读全文
摘要:打开VS2005,建立一个win32控制台程序,然后打开项目--LibTest属性(如图1),打开LibTest属性页(如图2),在右边配置类型处选择静态库(lib)。然后我们就可以写我们的头文件和cpp源文件了。写完后编译下就可以在目录下找到相应的lib文件了。图一图二 在这里我首先写一个比较简单的库文件,头文件内容是:[代码]源文件是:[代码] 编译后即可生成LibTest.lib(其中Lib...
阅读全文
摘要:非常基础题。就是判断整数大小。本来我还想需要判断那三个数是不是要用double什么的,结果用int就AC了。[代码]
阅读全文
摘要:typedef似乎很简单,如typedef int integer;然而,这些简单的typedef语句容易让人产生一种误解,typedef就是一种宏替换,把后面的自定义类型替换成前面的已知类型,事实是这样的吗?显然不是! 首先可以肯定的是,我们不能这样去理解,因为虽然我们按照这样的理解方式去理解对于上面这种形式(typedef int integer)可以通过,但是对于其它方式是通不过的。考虑这样...
阅读全文
摘要:先看下面的程序例子:[代码]输出为:a+b:1在预定义处可以看到#Ex这样的字眼,什么意思呢?解释如下:这是一种被称为字符串化的预处理器特征(在表达式前用一个#实现),其作用是获得任何一个表达式并把它转换成为一个字符数组。我们在这里可以很好玩的把在预定义命令中的#Ex理解成一个字符数组的首地址,于是可以有下面的程序:[代码]输出为:wangbin注:这种字符串化只能在预定义语句中才有效,放在其它地...
阅读全文
摘要:名字空间是一种描述逻辑分组的机制。也就是说,如果有一些声明按照某种准则在逻辑上属于同一个集团,就可以将它们放在同一个名字空间,以表明这个事实。 名字空间在C++中更多是用来避免类名的冲突,这在小的项目中可能看不出来,因为头文件和源文件比较少,类名冲突的概率比较小,但当你遇到一个很大的工程项目时,你就会认识到名字空间的使用还是很有必要的。 不想讲的太复杂,就是仅仅在这里写一个例子好了。头文件name...
阅读全文
摘要:C++的多态性是通过虚函数来实现的,虚函数的出现使得动态链接成为可能。基于构造函数的特点,不能将构造函数定义为虚函数,但可以将析构函数定义为虚函数。当派生类的对象从内存中撤销时,会先调用派生类的析构函数,然后自动调用基类的析构函数,如此看来析构函数也没有必要定义为虚函数。但是考虑如下这种情况,如果使用基类指针指向派生类的对象,而这个派生类对象恰好是用new运算创建的,这种情况下会如何呢?当程序使用...
阅读全文
摘要:C++中允许多重继承,看以下例子:[代码]编译后会出现以下编译错误:error C2385: ambiguous access of 'a'。究其原因,因为A是D的间接基类,通过D访问A的数据成员有两条路可走,一是D->B->A,另外一条是:D->C->A.所以导致了二义性。解决:这可以通过虚基类来解决二义性问题,如果采用虚基类方式来定义派生类,则在创建派生类对象时,类层次...
阅读全文
摘要:1. 顺序当创建一个派生类的对象时,系统首先自动创建一个基类对象,也就是说,在调用派生类构造函数创建派生类对象之前,系统首先调用基类的构造函数创建基类对象。当派生类对象生命期结束时,首先调用派生类的析构函数,然后调用基类的析构函数。简而言之,就是说,构造函数:基类->派生类。析构函数:派生类->基类。这个我们完全可以通过一个小程序来说明:[代码]OutPut:2. 通过派生类的构造函数...
阅读全文
摘要:[代码]OutPut:上面已经说过了,友元是单方向性的和非传递的,一个类设置基类A为友元,并不代表基类A的派生类也可以访问那个类的所有数据成员。非传递!
阅读全文
摘要:1. float MyFunc(const float b){return b*b;}这样写是不行的,因为上函数中的return那一句相当于以下两句:b = b * b;return b;而MyFunc函数中明确指定参数b是const类型的,不能对const类型的变量赋值。2.可以通过函数给变脸赋值,注意这个时候函数的返回值和参数应该是直接传地址的,也就是说,应该是指针或者引用。给出一个例子如下:...
阅读全文
摘要:说明程序内不存在语法错误了,但链接有错误,就是在把obj文件链接成exe文件时出现了问题,可以找到编译器相关工程的linker选项下看看,是否遗漏了相关的lib库文件,根据编译器提示的链接错误把相关的lib库文件加入即可。
阅读全文
摘要:根据他的意思写了小程序如下:[代码]当我们用myfish对象去调用getp函数时,得到的指针是Fish类对象的指针,而用animal对象去调用getp函数时,得到的指针是Animal类对象的指针。这就可以说明问题了。
阅读全文
摘要:因为要学习MFC,所以我就看了深入浅出MFC这本书,看完第二章—C++的重要性质,感觉侯老师总结的真不错,比我一头闷在primer中看效果要好很多,当然我现在看第二张看的明白也与我看primer有很大的关系,但相比较于看primer而言,我还是感觉侯老师这个第二章讲得真是很不错。算作是复习,也算做是总结,我还是宁愿拿出一个小时的时间来总结下第二章讲的内容,写在这里,一方面强化一下记忆,...
阅读全文
摘要:在孙鑫老师第二节课视频上听到的,索性就记在这里了,省的下次又不知道怎么说了。在C语言中,struct结构体中是不能定义成员函数的,在C++中可以。但在C语言中可以定义函数指针变量来达到自己所要的目的,不顾这貌似也不太必要。例子如下:struct test { int i; void (*pfun)(struct test*, int); } void set(struct test*...
阅读全文
摘要:孙鑫老师的视频,在VS2005中建立一个Win32 Application后基本属于把程序照抄到白色的编辑板上,编译后出错如下:cannot convert from 'const char [7]' to 'LPCWSTR',后面的几个错误也是类似的错误,一时无解。遂Google之,发现问题在于工程的设置,找到Project->Properties->Configuration pr...
阅读全文