C++
毒师
这个作者很懒,什么都没留下…
展开
-
C++ 宽字符
今天在VS2008上些程序时遇到如下问题:[code="c++"]void ReadFile_Name(){ //打开文件,并判断是否打开成功 ifstream outfile("E:\\HEWEI\\PhpCollab\\HandleString\\Name.txt"); //outfile.open("E:\\HEWEI\\PhpCollab-任务\\HandleStr...原创 2011-06-05 00:15:36 · 139 阅读 · 0 评论 -
C++ 默认构造函数
[align=center][size=large][b]C++ 默认构造函数[/b][/size][/align]一直认为若程序员没有自己定义无参数的构造函数,那么编译器会自动生成默认构造函数,来进行对成员函数的初始化,但这种认为是有误的,不全面的.默认的构造函数分为有用的和无用的,所谓无用的默认构造函数就是一个空函数、什么操作也不做,而有用的默认构造函数是可以初始化成员的函数。...原创 2011-07-14 11:39:54 · 125 阅读 · 0 评论 -
C++ 虚函数表解析
[align=center][size=large][b]C++ 虚函数表解析[/b][/size][/align]为什么在C++机制里要有虚函数表?虚函数表的作用是什么?怎样理解虚函数表?虚函数实现了C++的多态机制,可以在运行时动态的绑定所需函数。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形...原创 2011-07-14 21:02:56 · 72 阅读 · 0 评论 -
C++ 不要重新定义继承的非虚函数
[align=center][b][size=large]不要重新定义继承的非虚函数[/size][/b][/align]如果基类和派生类有相同的非虚函数,会有什么情况发生?看下面的例子:[code="c++"]class B {public: void mf();};void B::mf(){ cout mf(); return 0...原创 2011-07-18 14:15:07 · 156 阅读 · 0 评论 -
Polymorphism & Virtual Function
[align=center][size=large][b]Polymorphism & Virtual Function[/b][/size][/align]关于C++多态,看下面的例子:[code="c++"]#include using namespace std;class Shape{public: virtual void print(){cout...原创 2011-07-25 21:38:40 · 66 阅读 · 0 评论 -
C++多态技术的实现和反思(转)
面向对象技术最早出现于1960年代的Simula 67系统,并且在1970年代保罗阿托实验室开发的Smalltalk系统中发展成熟。然而对于大部分程序员来说,C++是第一个可用的面向对象程序设计语言。因此,我们关于面向对象的很多概念和思想直接来自于C++。但是,C++在实现面向对象中关键的多态性时,选择了与Smalltalk完全不同的方案。其结果是,尽管在表面上两者都实现了相似的多态性,但是在实践...原创 2011-10-17 17:05:27 · 65 阅读 · 0 评论 -
memmove and memcpy
[b][size=large][align=center]memmove and memcpy[/align][/size][/b]字符串的拷贝函数memmove and memcpy,有什么区别?来自MSDN上的:1.memmove:Copies count bytes (wmemmove) or characters (wmemmove) from src to d...原创 2011-07-31 13:11:21 · 98 阅读 · 0 评论 -
InterlockedIncrement
[size=large]InterlockedIncrement[/size][align=center][/align]InterlockedIncrement函数的作用?为何要用此函数?看一段MSDN上的说明:InterlockedIncrement FunctionIncrements (increases by one) the value of the spe...原创 2011-12-16 14:44:45 · 476 阅读 · 0 评论 -
volatile关键字(摘自:百度百科)
[size=large]volatile关键字[/size][align=center][/align]volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 使用该关键字的例子如下: int volat...原创 2011-12-16 14:59:28 · 82 阅读 · 0 评论 -
LINK : fatal error LNK1000: Internal error during IncrBuildImage
Win7安vc2008编译报LINK : fatal error LNK1000: Internal error during IncrBuildImage环境:Windows 7 Ultimate x64 versionMicrosoft Visual Studio 2008 SP1 (VC++ 2008)返回错误:LINK : fatal error LNK1000...原创 2011-12-16 17:07:05 · 87 阅读 · 0 评论 -
VS2008快捷键的设置
[align=center][size=large]VS2008快捷键的设置[/size][/align]VS2008默认的快捷键和VC++6.0有许多不同,用管了VC++6.0,在用VS2008时很不顺手,那么如何设置VS2008默认热键呢?Tools-->Options-->Environment-->Help-->Keyboard里面可以对全部的快捷键进行重定义举例如...原创 2012-02-02 13:43:18 · 472 阅读 · 0 评论 -
VS2008下Boost库的安装编译下载boost库
下载boost库 (最好去官网下,一般有SGI(GCC+用的较多)和BOOST之分,VS下用BOOST)http://dl2.csdn.net/fd.php?i=21242861316189&s=39836e47ecfaa50a8b9208b6ecd5c798下载boost_1_34_1(最新版本执行方法一样,改下名字即可)压缩文件,解压缩 到d:\boost_1_34_1\(可以任何位置...原创 2011-11-09 19:19:36 · 134 阅读 · 0 评论 -
Souce Insight 设置
[size=large][align=center]Souce Insight 设置[/align][/size]【问题】Source Insight里输入中文,字间距相当的大。【答案】1.Options->Style Properties2. 在左边Style Name下找到Comment Multi Line和Comment.在其右边对应的Font属性框下的Font N...原创 2011-12-09 17:16:28 · 81 阅读 · 0 评论 -
关键词explicit
关键词explicit[size=large][/size][align=center][/align]项目中经常看到关键词explicit,MSDN上的解释为:为了防止隐式使用拷贝构造函数的,就是限制编辑器私自使用默认的转换。例子如下:[code="C++"]class A{public: //explicit A(int i) : m_i(i){ c...原创 2011-12-10 20:32:19 · 96 阅读 · 0 评论 -
尽量使用const
[align=center][size=large][b]尽可能的使用const[/b][/size][/align]const:使用const的好处是指定一种语义上的约束----某种对象不能被修改,而作用于变量上,则告诉编辑器和其他程序员:此变量为常量,不可被修改。[b]一、const作用在变量上:[/b]看下面的例子:[code="c++"]char *p ...原创 2011-07-12 10:51:37 · 154 阅读 · 0 评论 -
Operator=
[align=center][size=large][b]Operator=[/b][/size][/align]赋值构造函数,问题1:为何返回类型是类,即return *this; 问题2:为何要对自身判断,怎么判断以防止赋值给自己? 问题3:自己定义赋值构造函数,要对那些数据赋值?带着这些问...原创 2011-07-11 21:54:25 · 191 阅读 · 0 评论 -
虚析构函数
[align=center][size=large][b]虚析构函数[/b][/size][/align][size=large][b]一 、为何要单独讨论虚析构函数?虚函数在类中到底有什么作用?[/b][/size]看如下代码:[code="c++"]#include using namespace std;class enemytarget {publi...原创 2011-07-11 10:43:37 · 62 阅读 · 0 评论 -
VS2008生成静态库即调用静态库
[size=large][align=center]VS2008生成静态库即调用静态库[/align][/size]这几天老大让我把HDecode的代码封装成库,网上查了查资料,下面是一个简单的函数封装为库(静态库)的实例:生成lib方法:步骤一,新建项目Win32 Project->Static library,建立一个头文件Lib.h#pragma once ...原创 2011-06-21 14:28:33 · 280 阅读 · 0 评论 -
C+ __cplusplus 剖析
[size=large][align=center]__cplusplus 剖析 [/align] [/size]时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus }#endif 为何...原创 2011-06-21 15:01:54 · 102 阅读 · 0 评论 -
C++中的static的作用
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。 2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一 个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易...原创 2011-06-23 09:57:09 · 147 阅读 · 0 评论 -
C++ strtok的用法
[size=large][align=center]strtok的用法[/align][/size]函数原型:char *strtok(char *s, char *delim);函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。函数使用说:1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)来...原创 2011-06-27 15:09:12 · 627 阅读 · 0 评论 -
C++ 单链表
[code="c++"]//LinkList.h//Define the Node of Linkstruct List{ int Data; struct List *Next; };typedef struct List Node;typedef Node *Link;class LinkList{public: LinkLis...原创 2011-06-27 18:51:59 · 76 阅读 · 0 评论 -
C++ 拷贝构造函数
[b][size=large][align=center]C++ 拷贝构造函数[/align][/size][/b]Copy Constructor 分为浅拷贝和深拷贝,二者有什么区别?对于普通对象的拷贝,很简单,例如:int a = 10;int b = a;这里会有一个临时变量temp作为中间的中转,那么我们的类的对象之间的拷贝是不是也是这么简单。深拷贝...原创 2011-06-28 14:57:42 · 61 阅读 · 0 评论 -
C++ 构造函数
最近看C++方面的书,让我更深入的理解了C++的构造函数。什么情况下调用默认构造函数,什么情况下调用拷贝构造函数以及什么情况下使用显示的初始化列表,初始化列表的初始化顺序,以及显示的初始化列表和拷贝构造函数的区别,为什么拷贝构造函数和赋值构造函数同时出现?1.默认构造函数如果我们没有定义自己的构造函数,编译时会自动调用默认构造函数来初始化类的对象。那么既然可以调用默认的构造函数,...原创 2011-06-29 10:46:36 · 125 阅读 · 0 评论 -
C++ Vector模板
[align=center][size=large][b]Vector模板[/b][/size][/align]这几天自己写了一个Vector模板,但是遇到一些问题:如何把.h和.cpp文件分开来写?模板的语法是什么?1.下面是在一个.cpp文件中实现模板[code="c++"]#include using namespace std;template cl...原创 2011-06-29 17:07:06 · 109 阅读 · 0 评论 -
C++ 继承
[size=large][b][align=center]C++ 继承[/align][/b][/size]如何设计C++的类?子类和基类之间的关系?子类默认构造函数的初始化列表,多态性,虚构函数的应用?[code="c++"]//Object-Oriented#include#include using namespace std;class LibMat...原创 2011-07-06 14:40:48 · 99 阅读 · 0 评论 -
构造函数,析构函数和赋值操作符
[b][align=center]构造函数,析构函数和赋值操作符[/align][/b]几乎所有的对象都需要构造函数、拷贝构造函数、析构函数和赋值构造函数,但问题是何时需要自己定义这些函数,何时调用默认的这些函数?这也是所谓的“浅拷贝”和“深拷贝”的问题。[b]当类的数据成员有指针,需要动态的为指针申请内存时,这时就需要自己定义拷贝构造函数和赋值构造函数,这就是所谓的“深拷贝”。[...原创 2011-07-10 14:16:39 · 80 阅读 · 0 评论 -
传值和传引用的区别
[size=large][b][align=center]传值和传引用的区别[/align][/b][/size]在C语言中,大都是通过值传递,C++也是继承了这一传统,C++里默认都是值传递,除非明确指出。[b]一、引用可以减少巨大的开销[/b]但是在C++中值传递即”实参的拷贝“有时会带来很大的开销,看下面的例子:[code="c++"]#include u...原创 2011-07-10 15:30:05 · 1243 阅读 · 0 评论 -
初始化函数列表和构造函数内赋值之区别
[size=large][b][align=center]初始化函数列表和构造函数内赋值之区别[/align][/b][/size]既然构造函数初始化列表和构造函数体内赋值都可以对成员变量赋值,那么二者有何区别,是不是二者等效呢?一、若类的数据成员是静态的(const)和引用类型,必需用初始化列表静态(const)的数据成员只能初始化而不能赋值,同样引用类型也是只可以被初始...原创 2011-07-10 17:05:22 · 194 阅读 · 0 评论 -
初始化列表和声明顺序之间的关系
[align=center][size=large][b]初始化列表和声明的顺序之间的关系[/b][/size][/align]类中数据成员的声明顺序和初始化顺序之间的关系?在类中的声明顺序是不是一定和初始化顺序相一致,不一致会出现什么结果,为什么要一致?类的数据成员的初始化顺序是按照类内数据成员的声明顺序进行初始化的,这样就可以减少不必要的开销,这样的话类就不必要为每一个...原创 2011-07-11 09:18:32 · 562 阅读 · 0 评论 -
Google编程风格
[align=center][size=large]Google编程风格(自己整理)[/size][/align][b][size=large]1. 头文件[/size][/b]1. 避免多重包含是学编程时最基本的要求; 2. 前置声明是为了降低编译依赖,防止修改一个头文件引发多米诺效应; 3. 内联函数的合理使用可提高代码执行效率; 4. 标准化函数参数顺序可以提高可诺性...原创 2012-04-01 17:05:17 · 114 阅读 · 0 评论