如果我有一个函数(比方说,一个大阵列)内的变量,它是有意义的声明它既static和constexpr?constexpr保证数组是在编译时创建的,那么它会static没用吗?
void f() {
static constexpr int x [] = {
// a few thousand elements
};
// do something with the array
}
Run Code Online (Sandbox Code Playgroud)
static在生成的代码或语义方面,实际上是在做什么吗?
调用静态方法的标准方法是什么?我可以考虑使用constructor或使用类本身的名称,我不喜欢后者,因为它没有必要.前者是推荐的方式,还是还有其他的东西?
这是一个(人为的)例子:
class SomeObject {
constructor(n){
this.n = n;
}
static print(n){
console.log(n);
}
printN(){
this.constructor.print(this.n);
}
}
Run Code Online (Sandbox Code Playgroud) 我想xml在我做很多其他事情之前从文件中读取字符串,比如setText在窗口小部件上做什么,所以如果没有要调用的活动对象,我怎么能这样做getResources()呢?
我已经搜索过了,但我对这三个概念并不是很了解.我何时必须使用动态分配(在堆中)以及它的真正优势是什么?静态和堆栈有什么问题?我可以编写整个应用程序而无需在堆中分配变量吗?
我听说其他语言包含了"垃圾收集器",所以你不必担心内存.垃圾收集器做什么?
您可以自己操作内存,而不能使用此垃圾收集器吗?
有人告诉我这个声明:
int * asafe=new int;
Run Code Online (Sandbox Code Playgroud)
我有一个"指针指针".这是什么意思?它不同于:
asafe=new int;
Run Code Online (Sandbox Code Playgroud)
?
我有以下课程:
public class Test {
public static int a = 0;
public int b = 1;
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用反射来获取静态字段列表?我知道我可以获得所有字段的数组Test.class.getDeclaredFields().但似乎没有办法确定Field实例是否代表静态字段.
有人可以解释成员函数中的静态变量如何在C++中工作.
鉴于以下课程:
class A {
void foo() {
static int i;
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我声明了多个实例A,那么调用foo()一个实例会增加i所有实例上的静态变量吗?或者只是它被召唤的那个?
我假设每个实例都有自己的副本i,但是通过一些代码,我似乎另有说明.
该主题大部分都说明了 - 静态方法无法在接口中声明的原因是什么?
public interface ITest {
public static String test();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了以下错误(至少在Eclipse中):"接口方法ITest.test()的非法修饰符;只允许使用public和abstract".
如果变量声明为public static varName;,那么我可以从任何地方访问它ClassName.varName.我也知道静态成员由类的所有实例共享,并且不会在每个实例中重新分配.
声明变量与声明变量有private static varName;什么不同private varName;?
在这两种情况下,它都不能ClassName.varName作为ClassInstance.varName任何其他类访问.
将变量声明为静态会给它带来其他特殊属性吗?
Java教程说:"同一个对象上的两个同步方法的调用不可能交错."
这对静态方法意味着什么?由于静态方法没有关联对象,所以synchronized关键字会锁定类,而不是对象吗?