2011年7月30日

C++虚函数表解析(转)

摘要: C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,. 阅读全文

posted @ 2011-07-30 20:23 xuangong 阅读(190) 评论(0) 推荐(0) 编辑

VC++中为何在每个CPP文件中必须要加入StdAfx.h头文件

摘要: 首先,与StdAfx.h对应的还有一个StdAfx.cpp文件,他们的目的是一次编译,生成一个projectname.pch这样的一个预编译头文件,将其用于工程中所有的cpp文件,这样的话,如果工程中的某个cpp文件需要引用头文件的话,则只需要去引用预编译pch文件即可,无需引入头文件,从而避免了重新编译头文件的麻烦,由于MFC系统的头文件比较巨大,如果每个CPP都重新编译一遍头文件,将浪费过多的编译时间,故这种做法能大大加快编译速度。其次,这就要求每个CPP如果要使用预编译头文件projectname.pch加快编译速度的话,VC默认的方式是通过在文件的中加入StdAfx.h的方法来告知编. 阅读全文

posted @ 2011-07-30 19:57 xuangong 阅读(752) 评论(0) 推荐(0) 编辑

c与c++程序连接问题 (转)

摘要: 它们之间的连接问题主要是因为c\c++编绎器对函数名译码的方式不能所引起的,考虑下面两个函数/* c*/int strlen(char* string){ ... }//c++int strlen(char* string){ ... }两个函数完全一样。在c在函数是通过函数名来识别的,而在C++中,由于存在函数的重载问题,函数的识别方式通函数名,函数的返回类型,函数参数列表三者组合来完成的。因此上面两个相同的函数,经过C,C++编绎后会产生完全不同的名字。所以,如果把一个用c编绎器编绎的目标代码和一个用C++编绎器编绎的目标代码进行连接,就会出现连接失败的错误。解决的方法是使用extern 阅读全文

posted @ 2011-07-30 19:53 xuangong 阅读(618) 评论(0) 推荐(0) 编辑

定制Vim for C++

摘要: 弄了台二手电脑改装下装上centos,当成公共的服务器使用,我就开始折腾Vim了,从网上找找资料动手干。世界上的程序员分三种,一种是用Emacs,一种是用Vim的,其它的归为第 三种。在编写C/C++的程序时,只用Vim自身的功能还是不太爽的, 还需要其它的插件,将其构造成一个比VC爽得多的IDE。由于每个工具介绍清楚都不是一两句话说得完的,以下只列出插件的名称,具体的内容google之 即可。其中vim插件可以到VIMer最常去的www.vim.org下载。安装Vim/非Vim插件Ctags,非vim插件。Ctags是Vim必不可少的工具,它可以将C/C++的宏、变量、函数、类等一系列信息. 阅读全文

posted @ 2011-07-30 15:42 xuangong 阅读(1530) 评论(0) 推荐(0) 编辑

VIM入门必读(转)

摘要: ——整理自互联网Vi IMproved (VIM) 是 Bram Moolenaar 开发的与 UNIX 下的通用文本编辑器 vi 兼容并且更加强大的文本编辑器。它支持语法变色、正规表达式匹配与替换、插入补全、自定义键等等功能,为编辑文本尤其是编写程序提供了极大方便。VIM 可以运行在“任何”操作系统上,包括我们常用的 Windows 和 UNIX/Linux。一旦掌握了 VIM,你就掌握了一项跨平台的利器。尽管 VIM 功能十分强大,但对于刚接触它的人尤其是用惯类似 Windows 的 notepad 的人来说,VIM 并不十分易于掌握,毕竟它兼容的是 vi 而不是 notepad。本文旨. 阅读全文

posted @ 2011-07-30 15:26 xuangong 阅读(3504) 评论(0) 推荐(1) 编辑

导航