c++ 成员变量初始化

静态变量必须初始化(类型private除外,不初始化编译错误)

初始化必须在类外,不包含static关键字、并且用类名修饰 int A::a = 1;

常量静态的整形数据成员可以在声明的时候初始化。

常量类型和引用类型,必须在构造函数初始化列表中初始化

初始化的顺序是根据变量的声明顺序

时间: 2024-10-05 15:56:54

c++ 成员变量初始化的相关文章

类内const static(static const)成员变量初始化问题

在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许const static成员变量在类外初始化,这个应该是编译器遗留下的bug(你也可以说是要求严格). 在其他编译器下,整型以及枚举类型的const static成员变量是允许在声明的同时进行初始的,其中整型包括int.short.long.char等,非整型是指浮点型 包括float.double等.

类的成员变量初始化总结

1. C++变量的初始化方式 首先把需要初始化的成员变量分为几类: ?  一般变量(int) ?  静态成员变量(static int) ?  常量(const int ) ?  静态常量(static const int) 对应的初始化方式是: ?  一般变量可以在初始化列表里或者构造函数里初始化,不能直接初始化或者类外初始化 ?  静态成员变量必须在类外初始化 ?  常量必须在初始化列表里初始化 ?  静态常量必须只能在定义的时候初始化(定义时直接初始化) 举一个简单的例子: [cpp] v

const map 成员变量初始化例子

Author:DriverMonkey Mail:[email protected] Phone:13410905075 QQ:196568501 #include <string.h> #include <iostream> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <map> using namespace std; class a_t

Java构造方法、成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的?

[Java笔试真题]:构造方法.成员变量初始化以及静态成员变量初始化三者的先后顺序是什么样的? [解答]:当类第一次被加载的时候,静态变量会首先初始化,接着编译器会把实例变量初始化为默认值,然后执行构造方法. Java程序的初始化一般遵循以下三个原则(以下三原则优先级依次递减): ① 静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次: ② 父类优先于子类进行初始化: ③ 按照成员变量定义顺序进行初始化,即使变量定义散布于方法

Java的成员变量初始化

对于方法里面的成员变量,Java要求程序员强制提供一个初始化的值.比如下面这个方法就会出错: public class Breakyizhan{ public void Z(){ int z; z++; } public static void main(String[] args) { Breakyizhan B = new Breakyizhan(); B.Z(); } } /* (www.breakyizhan.com) 输出结果是: 编译会出错,方法变量没有初始化 */ 而对于类的数据,

类成员变量初始化的问题

class window{ window(int maker){ System.out.println("window"+maker); } } class House{ window w1 ;//new window(1); window w3 = new window(3); House(){ System.out.print("House"); w3 = new window(33); } window w4 = new window(4); } class

C++构造函数对类成员变量初始化,使用初始化列表和构造函数内部直接赋值 的差别

初始化和赋值对内置类型的成员没有什么大的差别,像任一个构造函数都能够. 但有的时候必须用带有初始化列表的构造函数: (1) 成员类型是没有默认构造函数的类.若没有提供显式初始化时,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败. (2) const成员或引用类型的成员.由于const对象或引用类型仅仅能初始化,不能对他们赋值. 另一个赋值次数,效率上的差别: 初始化參数列表在对象初始化时对成员变量赋值一次. 构造函数内直接赋值,对成员变量赋值两

类成员变量初始化

C++类对象的构造顺序是这样的:分配内存->调用构造函数时,隐式/显式的初始化各数据成员->在构造函数内部初始化数据成员. C++类初始化需注意以下几点 1.类里面的任何成员变量在定义时是不能初始化的.    2.一般的数据成员可以在构造函数中初始化.(构造初始化列表初始化和构造函数体内赋值初始化)    3.const数据成员必须在构造函数的初始化列表中初始化.(道理很简单,const成员第一次数据初始化就是发生在类构造数据初始化时,一旦过了此时就会出现问题).    4.static在类的

java类中成员变量初始化后存放在堆内存中还是栈内存中?

答案是堆内存. 之前明明看过java类初始化过程的, 但一下子看到这样的题目,还是懵了. 百度后,那些帖子的回复各有各说, 脑袋都看得要塞住了,还是看书求证吧. 李刚的<疯狂Java>第128页开始,有一个类从初始化开始, 在内存发生什么变化的详细过程,这里简单记录一下. class Person{     String name;     static int eyeNum; } 上面这个Person类,有成员变量name和静态成员变量eyeNum了, 当执行下面语句: Person p1 

【C++】类的特殊成员变量+初始化列表

参考资料: 1.黄邦勇帅 2.http://blog.163.com/sunshine_linting/blog/static/448933232011810101848652/ 3.http://www.cnblogs.com/zhoug2020/archive/2012/08/31/2665451.html 一.初始化列表 1.假如定义了类 www 则 www::www (int i, int j, int k):x (i), y(j), z(k){},定义了一个带 i,j,k 三个参数的构