- 博客(6)
- 资源 (1)
- 收藏
- 关注
转载 连接器是如何工作的
许多Visual C++的使用者都碰到过LNK2005:symbol already defined和LNK1169:one or more multiply definedsymbols found这样的链接错误,而且通常是在使用第三方库时遇到的。对于这个问题,有的朋友可能不知其然,而有的朋友可能知其然却不知其所以然,那么本文就试图为大家彻底解开关于它的种种疑惑。大家都知道
2009-07-22 17:32:00 1032
原创 c++的名字查找
在C++中,函数编译时检查过程如下:第一步,执行名字查找(namelookup):在调用类中查找,并生成候选列表;若候选列表为空,再扩大查找范围(如名 字空间内,或父类);如此循环。如果最终无结果,那么抱歉,就会提示你“名字未能找到”;否则,编译器跳到第二步。第二步,执行重载辨别(overloadresolution):如果第一步得到的候选者个数大于一,编译器将以
2009-07-22 17:30:00 811
原创 如何防止头文件被重复包含
在windows平台下,有一个很方便的宏: #pragma once指定当前文件在构建时只被包含(或打开)一次,这样就可以减少构建的时间,因为加入#pragma once后,编译器在打开或读取第一个#include 模块后,就不会再打开或读取随后出现的相同#include 模块. 另外,还可以用条件编译语句来实现:#ifndef "XX_H"#define "XX_
2009-07-17 11:54:00 1182
原创 c++对象的内存布局(一)
本文主要讨论c++对像的内存布局。对于一个简单的或者是复杂的c++类,他在内存里到底是怎么储存的呢?每个类都有数据成员和接口,它们的存储方式一样吗?虚函数为什么会带来存储上的开销?类的静态成员和非静态成员有什么区别呢? 本文将为你揭晓这些问题的答案。 一个空的类: class Test{}c++支持一个空类,这个空类什么定义都没有,什么都不做。那sizeof(Test)是0
2009-07-16 17:32:00 549
原创 如何对VC的dll进行profile
如何profile一个dll呢?有以下步骤。 1.) Delete the export (.exp) and lib file (.lib) for the library you want to check 2.) Tick in the settings dialog on the tab-page the checkbox "Enable profiling"
2009-07-14 17:08:00 1455 2
原创 c++ 的new 数组操作
今天群里一个朋友问到:有class A,1. A* pa = new A[3] 2. pa[0] = A();3. pa[1] = A();4. pa[2] = A(); 5. delete []pa; 构造函数和析构函数是怎么调用的? 在1里,new A[3] 首先会分配内存,然后调用A的默认构造函数来初始化这个数组。所以在这里A的构造函数被调用了
2009-07-14 16:57:00 29755
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人