Tag: 初始化

静态初始化命令失败

我从一本书中读到了SIOF,它举了一个例子: //file1.cpp extern int y; int x=y+1; //file2.cpp extern int x; int y=x+1; 现在我的问题是: 在上面的代码中,会发生下面的事情吗? 当编译file1.cpp时,编译器会保留y,即不为其分配存储空间。 编译器为x分配存储空间,但不会初始化它。 当编译file2.cpp时,编译器会将x保留,即不为其分配存储空间。 编译器为y分配存储空间,但不会初始化它。 当链接file1.o和file2.o时,现在让file2.o被初始化,所以现在: x是否获得0的初始值? 或没有得到初始化?

Java中数组的默认初始化是什么?

所以我声明和初始化一个int数组: static final int UN = 0; int[] arr = new int[size]; for (int i = 0; i < size; i++) { arr[i] = UN; } 说我这样做,而不是… int[] arr = new int[5]; System.out.println(arr[0]); … 0将打印到标准输出。 另外,如果我这样做: static final int UN = 0; int[] arr = new int[5]; System.out.println(arr[0]==UN); … true将打印到标准输出。 那么Java如何默认初始化我的数组呢? 假设默认初始化将数组下标设置为0 ,这意味着我不必遍历数组并初始化它是否安全? 谢谢。

构造函数代码在Java中运行之前是否已初始化字段?

任何人都可以解释下面的程序的输出? 我认为构造函数是在实例variables之前初始化的。 所以我期待的输出是“XZYY”。 class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } public class Z extends X { Y y = new Y(); Z() { System.out.print("Z"); } public static void main(String[] args) { new Z(); } }

为什么列表初始化(使用花括号)比替代scheme更好?

MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); 为什么? 我找不到答案,所以让我回答我自己的问题。

查找C ++静态初始化顺序问题

我们遇到了一些静态初始化顺序失败的问题 ,我正在寻找方法来梳理大量的代码,以查找可能的事件。 有关如何有效地做到这一点的任何build议? 编辑:我得到一些如何解决静态初始化顺序问题的好答案,但这不是我的问题。 我想知道如何find这个问题的对象。 埃文的答案在这方面似乎是最好的; 我不认为我们可以使用valgrind,但我们可能有内存分析工具,可以执行类似的function。 这只会在给定的构build中初始化顺序错误的情况下捕获问题,并且顺序可能随着每个构build而改变。 也许有一个静态分析工具可以解决这个问题。 我们的平台是在AIX上运行的IBM XLC / C ++编译器。

如何在Java中初始化一个数组?

我正在初始化一个数组数据,像这样: public class Array { int data[] = new int[10]; /** Creates a new instance of Array */ public Array() { data[10] = {10,20,30,40,50,60,71,80,90,91}; } } NetBeans在线指出错误 data[10] = {10,20,30,40,50,60,71,80,90,91}; 我该如何解决这个问题?

用硬编码元素初始化std :: vector最简单的方法是什么?

我可以创build一个数组,并像这样初始化它: int a[] = {10, 20, 30}; 如何创build一个std::vector并初始化它类似的优雅? 我知道的最好的方法是: std::vector<int> ints; ints.push_back(10); ints.push_back(20); ints.push_back(30); 有没有更好的办法?

什么是初始化块?

我们可以把代码放在构造函数或方法或初始化块中。 什么是初始化块的使用? 每个Java程序都必须拥有它吗?

在这个特定的情况下,使用成员初始值设定项列表和在构造函数中赋值有什么不同?

在内部和关于生成的代码,之间有一个真正的区别: MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { } 和 MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 } 谢谢…

静态初始化块

据我了解,“静态初始化块”是用来设置静态字段的值,如果不能在一行中完成。 但我不明白为什么我们需要一个特殊的块。 例如,我们将一个字段声明为静态的(没有赋值)。 然后写几行代码,生成并赋值给上面声明的静态字段。 为什么我们需要这样的特殊块: static {…} ?