一共有三個文件
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模式!
第一次編譯:正常
顯示結(jié)果為:11
修改頭文件 AAA.h 把 Base( int v = 11 ); 改為 Base( int v = 22 );
第二次編譯:不正常
顯示結(jié)果為:11
查看文件“生成”截圖:

顯然,在Debug模式下,main.cpp被跳過了。
在main.cpp文件內(nèi)我們定義的類對象,因?yàn)闆]有被重新編譯,所以該對象仍然持有的是上一次成功編譯前的值。顯示結(jié)果為 11 也不足為怪了。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
以下為Release模式!
第三次編譯:等待生成Release版本的執(zhí)行文件。
顯示結(jié)果和預(yù)期的一樣,值為 22
修改頭文件 AAA.h 把 Base( int v = 22 ); 改為 Base( int v = 33 );
第四次編譯:正常
顯示結(jié)果為:33
查看文件“生成”截圖:

顯示,Release的編譯模式和Debug完全不同,無論文件有沒有改動,在Release模式下,所有文件都會被重新編譯一次。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
測試環(huán)境:
VS2008
Windows7 32bit