关于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 个 ==========

 

 

转载于:https://www.cnblogs.com/lihaozy/archive/2012/11/21/2781549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值