关于const static数据成员VC6.0和VS2012之间的不同处理

本文探讨了在VC6.0和VS2012两种编译器下,类内的const static成员变量的不同声明与初始化方式及其兼容性。实验表明,在VC6.0中仅支持类内声明、类外初始化的形式;而在VS2012中,除了VC6.0支持的方式外,还允许类内初始化、类外声明,甚至仅在类内完成声明与初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、类内写:const static int m_c_s_Test;

类外写:const int NC::m_c_s_Test = 100;

两个编译器没问题,都能编译通过,并能够正常运行。

VC6.0:

VS2012:





2、类内写:const static int m_c_s_Test = 100;

类外写:const int NC::m_c_s_Test;

两个编译器没问题,都能编译通过,并能够正常运行。

VC6.0:


VS2012:




3、类内写:const static int m_c_s_Test;

类外写://const int NC::m_c_s_Test = 100;

两个编译器没问题,都能编译通过,并能够正常运行。

VC6.0:


VS2012:




结论:

关于const static 数据成员,

VC6.0只能类内定义,类外初始化,即:

类内写:const static int m_c_s_Test;

类外写:const int NC::m_c_s_Test = 100;

而对于VS2012来说可以类内定义,类外初始化,(同VC6.0)

也可以类内初始化,类外定义,甚至类内初始化,类外无定义,即:

类内写:const static int m_c_s_Test = 100;

类外写:const int NC::m_c_s_Test;

或者:

类内写:const static int m_c_s_Test = 100;

类外写://const int NC::m_c_s_Test;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值