關於static成員變量的初始化的實驗


 

#include <iostream>
using namespace std;

class A{
public:
    A()
    {
        //test = 1;            //aa
    }
    static int test;
};

int A::test = 1;            //bb

int main()
{
    cout<<A::test<<endl;
    return 1;
}

根據C++ Primer中所敘述,static成員必須在類外進行初始化,而不能在構造函數內進行初始化,於是進行如下實驗:

1 令aa行enable,令bb行disable,鏈接提示:

1>test.obj : error LNK2001: 無法解析的外部符號 "public: static int A::test" (?test@A@@2HA)
1>d:\backup\我的文檔\visual studio 2010\Projects\test\Debug\test.exe : fatal error LNK1120: 1 個無法解析的外部命令

 

2 令aa行和bb行都disable,鏈接提示:

1>test.obj : error LNK2001: 無法解析的外部符號 "public: static int A::test" (?test@A@@2HA)
1>d:\backup\我的文檔\visual studio 2010\Projects\test\Debug\test.exe : fatal error LNK1120: 1 個無法解析的外部命令

 

3 令aa行disable,bb行enable,程序正常運行, 結果為:

1>------ 已啟動全部重新生成: 項目: test, 配置: Debug Win32 ------
1>生成啟動時間為 2012/11/21 21:33:53。
1>_PrepareForClean:
1>  正在刪除文件“Debug\test.lastbuildstate”。
1>InitializeBuildStatus:
1>  正在創建“Debug\test.unsuccessfulbuild”,因為已指定“AlwaysCreate”。
1>ClCompile:
1>  test.cpp
1>Manifest:
1>  正在刪除文件“Debug\test.exe.embed.manifest”。
1>LinkEmbedManifest:
1>  test.vcxproj -> d:\backup\我的文檔\visual studio 2010\Projects\test\Debug\test.exe
1>FinalizeBuildStatus:
1>  正在刪除文件“Debug\test.unsuccessfulbuild”。
1>  正在對“Debug\test.lastbuildstate”執行 Touch 任務。
1>
1>生成成功。
1>
1>已用時間 00:00:01.53
========== 全部重新生成: 成功 1 個,失敗 0 個,跳過 0 個 ==========

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM