静态变量可以存在于C++中的任何地方,而不是在类中?如果是这样,他们展示了什么行为?由于没有任何对象,我认为它们不会在实例之间共享。静态变量是否可以在C++中不存在类?
-2
A
回答
3
是的。
静态对象的生命周期是程序的生命周期,如果变量是在文件范围声明的(如果在块范围中定义,则没有链接),则对象的链接是内部链接。
1
在函数之外,静态表示该编译单元是本地的。您可以使用匿名命名空间实现相同的效果。
1
当然,当然,例如:
int sequence()
{
static int result = 0;
return ++result;
}
所以,在这里,结果变量将继续在功能范围之外的存在,并不断加大在每次进入该功能的时间。
1
其他两个地方:
全局变量和函数
- 全球
static
变量(或函数)是局部的编译单元,不能“看到”从其他编译单元
- 全球
局部变量
static
第一次当它们的声明被第一次越过时,局部变量被初始化一次(这对于只在第一次调用一个函数时做事很有用),并且在那之后它们甚至在函数返回后仍保留它们的值并再次呼吁
注意的static
这些不同的用途真的什么都没有做对方。 static
意味着不同的事情取决于你在哪里使用它,很像const
。
0
这取决于你的意思是一个静态变量。关键字static
具有不同的语义,具体取决于您使用它的情况。
成员变量在声明为静态时具有静态存储持续时间。这意味着这些变量的生命周期会持续到程序的持续时间。这是'静态变量'的常见含义。有3种情况下变量将具有静态存储持续时间:
- 当在本地(函数作用域)变量上使用
static
关键字时。 - 将
static
关键字应用于类成员变量时。 - 任何没有动态或线程存储持续时间且不是本地变量的变量。
例子:
struct foo
{
static int x; // This has static storage duration
};
void bar()
{
static int y = 5; // This has static storage duration
}
int z = 1; // This has static storage duration
因此,要回答你的问题,如果它是“变量可以有静态存储,在类的成员不?”,答案是肯定的。全局或命名空间范围变量默认具有静态存储持续时间。声明为静态的函数范围变量也具有静态存储持续时间。
但是,static
关键字在用于全局或名称空间范围内的变量时具有其他含义。对于这些,static
指定该变量具有内部链接。也就是说,他们只能在同一翻译单位内参考。
例子:
static int i = 5; // This has internal linkage
相关问题
- 1. 在C++中,静态对象是否可以超出其静态成员变量?
- 2. Activity中的静态变量是否可以保存其状态?
- 3. 在非静态类中锁定静态变量是否安全?
- 4. 是否存在与“this”等效的c#中的静态变量
- 5. 在JavaScript中,是否可以创建一个可修改的静态类变量?
- 6. 在C++中访问静态类变量?
- 7. 是否可以在C++的类中初始化静态常量成员对象?
- 8. C++中是否存在类似Java的静态嵌套类?
- 9. 内存分配静态变量在非静态类在.net
- 10. PHP:是否可以在类中使用类?静态回报
- 11. C#'动态'变量可以引用静态类型吗?
- 12. 静态const变量在子类中不是常量
- 13. 在一个类中使用私有静态变量是否好?
- 14. 静态变量在PHP类
- 15. 在对象之间是否存在静态局部变量?
- 16. 是在Android中保存静态变量的“Globals”类吗?
- 17. 是否可以在C++/CLI环境中创建静态字典?
- 18. 是否可以在Java中扩展非静态内部类?
- 19. 在c/C++中的CPU缓存中分配静态内存:是否有可能?
- 20. 在静态类中存储全局不可变数据
- 21. 是否可以用lambda初始化静态变量?
- 22. 是否可以通过静态方法访问实例变量?
- 23. 静态数据成员是否可以在C++中键入其容器类型?
- 24. 在Objective C类中使用静态c变量
- 25. C++静态变量
- 26. C++ - 静态变量
- 27. C++静态变量
- 28. 在Java中的非静态类中声明静态变量
- 29. C++中的静态变量
- 30. 从C++中的静态方法访问非静态类变量
如果你downvote,说为什么 - 然后我就可以改善这个问题。这点很重要。 – SirYakalot 2012-02-10 10:36:15