c++11之前,只有静态常量整型数据成员才可以在类中初始化是为什么

如题所述

只有静态常量整型数据成员,才可以在类中初始化。

这是因为,当时认为,类定义中的数据定义,是一种声明,不是数据定义。
当用类 定义对象(变量,常量)时候,才开始定义数据。

静态常量整型数据成员
1)不是对象的一部分
2)可以产生常量表达式,所以可以在类中初始化。---否则,用它作为数组的大小,就不合适了。
静态常量整型数据成员,能够用来当作常量表达式使用,
不在内部定义的话,则该常量表达式未定义,就不能使用了。

C++11 非静态成员变量(常量),可以直接初始化,或者在初始化表中初始化。
C++11 中 初始化非静态成员变量(常量),可以看作赋给变量(常量)一个默认值。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-07-14
好像构造函数里必须初始化变量吧。类只是一个定义,并没有分配内存。假如你对非静态常量整型数据成员初始化,请问,数据值存放在哪里?本回答被提问者采纳

c++11之前,只有静态常量整型数据成员才可以在类中初始化是为什么
2)可以产生常量表达式,所以可以在类中初始化。---否则,用它作为数组的大小,就不合适了。静态常量整型数据成员,能够用来当作常量表达式使用,不在内部定义的话,则该常量表达式未定义,就不能使用了。C++11 非静态成员变量(常量),可以直接初始化,或者在初始化表中初始化。C++11 中 初始化非静态...

c++11之前,只有静态常量整型数据成员才可以在类中初始化是为什么
语法不支持呗 我说的 只是不能用“=”初始化,在构造函数里都是可以的 C++11 在这方面做了支持,简单的数据类型可以直接等号赋值,这样有的类就不需要写构造函数了。

C++ 类的定义问题,为什么只有const static 整型变量才可以在类中定义...
因为只有const static 变量是会全局保存的,即时你的类析构释放掉了,这些变量会依然保存在内存中 如果是非Const的变量,他会随着你的类的释放而释放 因此对于普通的变量,应该在构造函数中赋值

...只有静态常量整型数据成员才可以在类中初始化
因为静态成员是不能够改变的,只有常量成员才可以被修改,如const double csd2=99.9;就可以啦

VC 为什么不能在类里面初始化数据
应该是只有静态成员才可以初始化,这也很容易明白。java可不可以我忘记了,可以的话很奇怪 编译器把static const当作常量看待,对于其他数据成员,如果C++规定类里所有的数据成员都可以在类里初始化,那么这样导致的问题是:类在一个头文件中被声明,而头文件被包含到许多互相调用的单元去。但是,为了避免...

C++问题求解,在类中为什么不能给数据成员初始化值:
因为类只是定义的类型, 还没有实例化,也就是没有定义类的对象(变量), 没法存储 你可以在初始化列表里进行初始化 , 而构造函数的函数体之内赋值的话, 是在初始化后,--- 至于定义成static的, 这是静态的, 所有对象共享一个副本, 程序开始执行就初始化了, 就算没有定义对象, 也有它的实例, ...

为什么类的静态成员变量要在类外初始化
1. 在类中,只是声明了静态变量,并没有定义。2. 声明只是表明了变量的数据类型和属性,并不分配内存;定义则是需要分配内存的。注意:如果在类里面这么写int a; 那么是既声明了变量,也定义了变量,两者合在一起了。3. 静态成员是“类级别”的,也就是它和类的地位等同,而普通成员是“对象(...

c++中可以对类中私有成员中的静态变量初始化吗?
1.static成员的所有者是类本身和对象,但是多有对象拥有一样的静态成员。从而在定义对象是不能通过构造函数对其进行初始化。2.静态成员不能在类定义里边初始化,只能在class body外初始化。3.静态成员仍然遵循public,private,protected访问准则。4.静态成员函数没有this指针,它不能返回非静态成员,因为...

C++中,为何静态成员变量要在类外初始化还要加上数据类型?
在类内的静态成员变量仅仅是个声明,而不是定义,在类外的初始化才是定义,既然是定义,那肯定要有类型了

C++全局变量初始化
在C语言中,全局和静态变量的内存空间为全局,即使未初始化,内存空间也存在。如果进行初始化,初始化操作在代码执行之前完成,属于编译期初始化。对于内置变量,无需资源释放,仅需回收内存空间,因此在程序结束时,全局内存空间被一起回收。而在C++中,引入了对象,这带来了管理全局变量的新挑战。对象需要...

相似回答