一共有三个文件
AAA.h
#ifndef AAA
#define AAA
#include <iostream>
using namespace std;
class Base
{ public: int m_Value;
public: Base( int v = 11 );};
#endif
AAA.cpp
#include "AAA.h"
Base::Base( int v )
{ m_Value = v;}
main.cpp
#include "AAA.h"
int main( )
{ Base* base = new Base;
printf( "%d\n", base->m_Value );
int a; cin>>a; return 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
以下编译均为Debug模式!
第一次编译:正常
显示结果为:11
修改头文件 AAA.h 把 Base( int v = 11 ); 改为 Base( int v = 22 );
第二次编译:不正常
显示结果为:11
查看文件“生成”截图:
显然,在Debug模式下,main.cpp被跳过了。
在main.cpp文件内我们定义的类对象,因为没有被重新编译,所以该对象仍然持有的是上一次成功编译前的值。显示结果为 11 也不足为怪了。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
以下为Release模式!
第三次编译:等待生成Release版本的执行文件。
显示结果和预期的一样,值为 22
修改头文件 AAA.h 把 Base( int v = 22 ); 改为 Base( int v = 33 );
第四次编译:正常
显示结果为:33
查看文件“生成”截图:
显示,Release的编译模式和Debug完全不同,无论文件有没有改动,在Release模式下,所有文件都会被重新编译一次。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
测试环境:
VS2008
Windows7 32bit