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;
};
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中static关键字的用法有哪些? 问题答案: static 成员属于类而不是特定实例。 这意味着即使你创建了该类的一百万个实例,也没有创建任何实例,该字段仅存在一个实例[1]。它将被所有实例共享。 由于方法也不属于特定实例,因此它们不能引用实例成员。在给定的示例中,不知道应引用该类的哪个实例(以及该类的哪个实例)。成员只能引用成员。实例成员当然可以访问成员。 旁注:当然,成员
我刚刚意识到我让一个班级成员不必要地保持静态。我想知道这是否有意义,或者它们之间有什么区别。所以我有: 或 所以你可以看到,这个GUI类总是通过作用域操作符GUI::而不是点成员操作符来访问,我不会创建它的任何实例,它是完全静态的。因此,两个GUI类中的int和Foo对象要么有“static”关键字,要么没有。在GUI类不会被实例化的情况下,我不相信这会有什么不同。作为一种最佳实践,是否最好不使用
问题内容: 什么时候不宜在方法签名上使用Java中的static关键字?如果方法基于某些参数执行功能,并且不需要访问非静态字段,那么您是否不总是希望这些类型的方法都是静态的? 问题答案: 您 可能 不希望它为静态的一个原因是允许它在子类中被覆盖。换句话说,行为可能不取决于对象内的数据,而是取决于对象的确切类型。例如,您可能具有常规的集合类型,其属性将在始终可变的集合,始终不可变的集合中返回,并依赖
本文向大家介绍关键字volatile有什么含意? 并给出三个不同的例子。相关面试题,主要包含被问及关键字volatile有什么含意? 并给出三个不同的例子。时的应答技巧和注意事项,需要的朋友参考一下 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存
本文向大家介绍关键字volatile有什么含意?并给出三个不同的例子? 相关面试题,主要包含被问及关键字volatile有什么含意?并给出三个不同的例子? 时的应答技巧和注意事项,需要的朋友参考一下 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到 这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄