我刚刚意识到我让一个班级成员不必要地保持静态。我想知道这是否有意义,或者它们之间有什么区别。所以我有:
struct Log
{
int a;
std::string text;
};
struct GUI
{
GUI() = delete;
static void doSomething() {}
static inline int a;
static inline Foo fooObj;
};
或
struct GUI2
{
GUI2() = delete;
static void doSomething() {}
int a;
Foo fooObj;
};
所以你可以看到,这个GUI类总是通过作用域操作符GUI::而不是点成员操作符来访问,我不会创建它的任何实例,它是完全静态的。因此,两个GUI类中的int和Foo对象要么有“static”关键字,要么没有。在GUI类不会被实例化的情况下,我不相信这会有什么不同。作为一种最佳实践,是否最好不使用static关键字?另外,如果两者之间有什么区别呢?我只是注意到我觉得这对我来说没什么区别。
struct GUI2
{
GUI2() = delete;
static void doSomething() {}
int a;
Foo fooObj;
};
int main() {
GUI2::a = 0; // error
}
如果GUI2::a
不是静态成员,那么它只存在于GUI
对象中。这意味着不能使用GUI2::a
访问它,因为类没有附加a
的实例。您需要一个实例:
GUI2 gui;
gui.a = 0; // OK
如果GUI2::a
是静态成员,则它与对象分离并独立存在(并且必须使用int GUI::a;
某处这样定义):
GUI2::A = 0; // OK
这些例子中的“static”关键字有区别吗?
是的。
本文向大家介绍Java中的静态关键字,包括了Java中的静态关键字的使用技巧和注意事项,需要的朋友参考一下 静态修饰符 静态变量 在静态关键字用于创建将独立存在的类创建的所有实例变量。无论类的实例数量如何,静态变量只有一个副本存在。 静态变量也称为类变量。局部变量不能声明为静态。 静态方法 static关键字用于创建将独立于为该类创建的任何实例存在的方法。 静态方法不使用定义它们的类的任何对象的任
我的问题是关于一个类的静态关键字的应用。因为对于实例、变量和方法应用static关键字很容易,但是对于类应用static关键字则不起作用。最后请帮我解一下代码
问题内容: 在另一个问题中,用户指出该关键字使用很危险,并提出了不使用该对象创建对象的解决方案。我不相信这是真的,主要是因为我使用了Prototype,Scriptaculous和其他出色的JavaScript库,并且每个人都使用了关键字。 尽管如此,昨天我还是在DouglasCrockford在YUI剧院观看了一次演讲,他说的一模一样,他不再在代码中使用关键字(JavaScript上的Crock
考虑下面的一段代码,它基本上是Meyer的单例的一个例子(希望如此) 第1行提到的static关键字没有意义吗?如果是,为什么?
问题内容: 美好的一天, 当我运行此代码时: 它创建以下异常: 但是,如果我在顶部的Label之前删除static关键字,则代码可以正常运行。 我的问题是:为什么在创建静态标签而不是静态矩形时会发生错误?我希望Label是静态的,而不是类的对象。 问题答案: 为什么创建a 而不创建a时会发生错误? 本质上,这是初始化顺序的问题。创建对象时,需要正确初始化UI平台。潜在地,它也可能发生在上,但很可能