zoukankan      html  css  js  c++  java
  • 关于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 个 ==========

  • 相关阅读:
    嵌入式GUI FTK介绍(7)主题
    嵌入式GUI FTK介绍(2)两个小应用程序
    嵌入式GUI FTK介绍(8)编译/运行PC模拟版本
    嵌入式GUI FTK介绍(5)在多平台上运行
    嵌入式GUI FTK介绍(4)脚本语言绑定
    嵌入式GUI FTK介绍(3)XML界面描述语言
    活动图
    ASP.NET程序中常用的三十三种代码
    Server的Transfer和Response的Redirect (转)
    .net 点击刷新验证码问题
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2781549.html
Copyright © 2011-2022 走看看