请问在类中声明一个静态常量,我该如何初始化它?

时间:2022-01-31 20:21:13
1.在类中声明一个静态常量,我该如何初始化它?


2.typedef struct xxx
{
   unsigned int uint:4;
}MyTest;

void main()
{
  MyTest a;
  cout<<a.uint<<endl;
}

result:12
请问这是为什么?

13 个解决方案

#1


1.
头文件中
class A
{
    static const int i;
};

cpp文件中
const int A::i = 1;

2.
你的a没有初始化,uint里面的值是多少是不能确定的。

#2


技术问题请到技术区提问。

#3


帮楼主转过去了。

#4


静态变量类外初始化。

#5




为什么在非技术区啊?
建议转到技术区!

1.在类中声明一个静态常量,我该如何初始化它?
标准中规定

可以这样
头文件中
class xx
{
  static const int con = 4; 
}
文本文件中
static const int xx::con;//必须的变量声明
但在devcpp中,也可以不声明就通过了

另外也可以用楼上的方法

2.typedef struct xxx
{
   unsigned int uint:4;
}MyTest;

void main()
{
  MyTest a;
  cout<<a.uint<<endl;
}

result:12
请问这是为什么?

因为是xxx的成员uint使用的是位字段,是4位整型
你没有对其初始化

所以为默认值
对于12,我认为你是在vc下测试的,栈上默认的内存是0xcccccccc,
所以你取一位是c
也就是12了

#6


unsigned int uint:4;
冒号后面跟个4有什么意思?

#7


哦,我知道了。谢谢 All!

#8


1:  除了静态整型变量,其他类型的静态变量只能在类实现时初始化。

#9


unsigned int uint:4; //表示位域里的这个项占4个二进制位

#10


静态成员变量,类定义,类外初始化
第二个表示位,占用4位

#11


1。在类外初始花
2。代表4个二进制位

#12


1。在类外初始花,不要static,加上作用域
2。代表4个二进制位

#13


不如enum

#1


1.
头文件中
class A
{
    static const int i;
};

cpp文件中
const int A::i = 1;

2.
你的a没有初始化,uint里面的值是多少是不能确定的。

#2


技术问题请到技术区提问。

#3


帮楼主转过去了。

#4


静态变量类外初始化。

#5




为什么在非技术区啊?
建议转到技术区!

1.在类中声明一个静态常量,我该如何初始化它?
标准中规定

可以这样
头文件中
class xx
{
  static const int con = 4; 
}
文本文件中
static const int xx::con;//必须的变量声明
但在devcpp中,也可以不声明就通过了

另外也可以用楼上的方法

2.typedef struct xxx
{
   unsigned int uint:4;
}MyTest;

void main()
{
  MyTest a;
  cout<<a.uint<<endl;
}

result:12
请问这是为什么?

因为是xxx的成员uint使用的是位字段,是4位整型
你没有对其初始化

所以为默认值
对于12,我认为你是在vc下测试的,栈上默认的内存是0xcccccccc,
所以你取一位是c
也就是12了

#6


unsigned int uint:4;
冒号后面跟个4有什么意思?

#7


哦,我知道了。谢谢 All!

#8


1:  除了静态整型变量,其他类型的静态变量只能在类实现时初始化。

#9


unsigned int uint:4; //表示位域里的这个项占4个二进制位

#10


静态成员变量,类定义,类外初始化
第二个表示位,占用4位

#11


1。在类外初始花
2。代表4个二进制位

#12


1。在类外初始花,不要static,加上作用域
2。代表4个二进制位

#13


不如enum