Questions tagged «static»

静态是一些编程语言中使用的术语,用于定义未绑定到任何特定对象实例的函数或数据存储区域(字段)。在大多数情况下,如果使用此标签,则应与特定的编程语言标签结合使用。


2
如何初始化静态数组?
我已经看到了在Java中定义静态数组的不同方法。要么: String[] suit = new String[] { "spades", "hearts", "diamonds", "clubs" }; ...或仅 String[] suit = { "spades", "hearts", "diamonds", "clubs" }; 或作为 List List suit = Arrays.asList( "spades", "hearts", "diamonds", "clubs" ); 有区别吗(当然除了List定义)? 有什么更好的方法(明智的选择)?

3
是否存在static_warning?
我知道这个问题提到了Boost的“ STATIC WARNING”,但是我想再次提一个问题,特别是我如何实现一个static_warning操作类似于a的操作,static_assert但仅在编译时发出警告,而不是中止编译错误。 我想要类似于Alexandrescu提出的在C ++ 11之前的静态断言的提议,该提议以某种方式设法打印了一些有用的上下文信息作为错误的一部分。 要求用户启用某些标准的编译器警告以使此构造起作用(可能是“无效的指针转换”或“违反严格的别名规则”),这是可以接受的-无论如何,任何应作为常规编译一部分的警告都可以使用。 简而言之,我想static_warning(false, "Hello world");创建一个编译器警告,该警告应以某种方式在警告消息中包含字符串“ hello world”。在GCC和MSVC中,这可能吗?如何? 对于任何特别聪明的解决方案,我都会很高兴地给予小额奖励。 作为一点解释:在考虑这个问题时,我想到了一个主意:静态警告将是跟踪复杂模板专业化的编译时过程的有用方法,否则很难调试。静态警告可以用作编译器发出“我正在编译这部分代码”的简单信标。 更新。理想情况下,将在以下设置中触发警告: template <typename T> struct Foo { static_warning(std::is_pointer<T>::value, "Attempting to use pointer type."); // ... }; int main() { Foo<int> a; Foo<int*> b; }

4
如何模拟通过PowerMock返回void的静态方法?
我的项目中有一些静态util方法,其中一些只是传递或引发异常。关于如何模拟具有除void以外的返回类型的静态方法,有很多示例。但是,我该如何模拟将void返回为“ doNothing()”的静态方法? 非无效版本使用以下代码行: @PrepareForTest(StaticResource.class) ... PowerMockito.mockStatic(StaticResource.class); ... Mockito.when(StaticResource.getResource("string")).thenReturn("string"); 但是,如果将其应用于StaticResourcesreturn void,则编译将抱怨when(T)不适用于void ... 有任何想法吗? 解决方法可能是让所有静态方法都返回一些Boolean成功方法,但我不喜欢这种方法。


5
应该永远不要使用静态内联函数吗?
使用inline关键字有两个含义(第7.1.3 / 4节): 它提示编译器,在调用点替换函数主体比通常的函数调用机制更可取。 即使省略了内联替换,也要遵循内联的其他规则(尤其是一个定义规则)。 通常,如果需要,任何主流的编译器都会在调用时替换函数体,因此inline,#1真正不需要仅将函数标记为。 更进一步 #2,据我了解,当您将一个函数声明为static inlinefunction时, 该static对功能力关键字inline函数有一个内部连接(内联函数具有外部连接)这样的功能中的每一个实例被视为一个单独的功能(各功能的地址是不同的)和这些功能中的每一种情况下都有自己的副本静态局部变量和字符串文字(内联函数只有这些的一个副本) 因此,这种功能就像其他任何功能一样 static功能,并且关键字inline不再具有重要性,因此变得多余。 因此,实际上标记功能static,inline两者都没有用。应该是static(不是最优选的)还是inline(最优选的), 那么,在一个函数上使用static和inline在一起实际上是没有用的吗?
70 c++  static  inline 

2
为什么.class不调用Class中的静态块?
这是我的代码: public class StupidClass { static { System.out.println("Stupid class loaded!"); } } 还有我单独进行的测试。 import org.junit.Test; public class StupidTest { @Test public void foo() throws ClassNotFoundException { final Class<?> stupidClass = Class.forName("StupidClass"); System.out.println(stupidClass.getSimpleName()); } @Test public void bar() throws ClassNotFoundException { final Class<StupidClass> stupidClassClass = StupidClass.class; System.out.println(stupidClassClass.getSimpleName()); } } 当我运行测试foo时,我会看到: Stupid …

3
C ++中的静态变量
我想知道头文件中的静态变量与类中声明的静态变量之间有什么区别。在头文件中声明静态变量时,其范围仅限于.h文件或跨所有单元。同样,通常在类中声明时,静态变量会在.cpp文件中初始化吗?那是否意味着静态变量范围限制为2个编译单元?
69 c++  static  scope 

13
为什么C#不像C那样支持局部静态变量?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3个月前关闭。 改善这个问题 为什么C#没有像C这样的局部静态变量?我很想念!!
69 c#  static 


6
如果“ let”关键字用于快速定义常量/不可变变量,那么“ static”关键字有什么用?
我对在Swift中使用static关键字有些困惑。众所周知,swift引入了let关键字来声明不可变对象。就像声明表视图单元格的ID一样,该ID在其生命周期中很可能不会改变。现在在一些类似struct的声明中使用static关键字是什么: struct classConstants { static let test = "test" static var totalCount = 0 } 而让关键字做同样的事情。在目标C中,我们使用static声明了一些常量,例如 static NSString *cellIdentifier=@"cellId"; 除了让我更好奇的是,还使用了static关键字以及let和var关键字。有人可以解释一下该静态关键字在哪里使用吗?更重要的是,我们真的需要快速静态化吗?

4
接口实现中的静态变量是什么意思?
在接口的实现中定义时,我不太了解静态变量。在方法中,我确实了解它们与局部变量的区别,但在直接在实现中定义时则没有区别。 看这些例子。这两者实际上有什么区别? #include "MyClass.h" @implementation MyClass int myInt; ... @end 和: #include "MyClass.h" @implementation MyClass static int myInt; ... @end myInt在两种情况下都对所有方法可见,并且如果我解释了我正确运行的测试,myInt则对于两种不同的类实例,在两种情况下都将是相同的变量。

5
以静态方式创建对象
谁能解释Java如何执行此代码?我的意思是执行每个语句的顺序。 public class Foo { boolean flag = sFlag; static Foo foo = new Foo(); static boolean sFlag = true; public static void main(String[] args) { System.out.println(foo.flag); } } 输出: false
68 java  static 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.