static-initialization相关内容
有一个简单且众所周知的模式可以避免静态初始化失败,如section 10.13 of the C++ FAQ Lite中所述。 在此标准模式中,存在一种权衡,要么构造的对象永远不会被析构(如果析构函数没有重要的副作用,这不是问题),要么不能从另一个静态对象的析构函数安全地访问静态对象(参见section 10.14 of the C++ FAQ Lite)。 所以我的问题是:如果一个静
..
..
//文件:InitFirst.h#pragma 一次模板结构 InitFirst{静态浮动 s_dividedByThree;};模板float InitFirst::s_dividedByThree = val/3.0; //文件:Test.h#include #include #include "InitFirst.h"
..
案例 1 class 程序 {静态最终 int var;静止的 {程序.var = 8;//编译错误}公共静态无效主(字符串 [] args){国际我;我 = 程序.var;System.out.println(Program.var);}} 案例 2 class 程序 {静态最终 int var;静止的 {无功 = 8;//行}公共静态无效主(字符串 [] args){System.out
..
有一次我读了一个很棒的C++ FAQ(真的很好!!)并阅读了
..
以下代码是合法前向引用的情况吗?如果是,为什么? 公共类MyClass{私有静态 int x = getValue();私有静态 int y = 5;私有静态 int getValue(){返回 y;}public static void main(String[] args){System.out.println(x);}} 解决方案 您拥有的上述代码是完全合法的 Java.在 Java
..
考虑这个示例代码: template字符寄存器_(){返回 D::get_dummy();//静态函数}模板结构 Foo{静态字符常量虚拟;};模板char const Foo::dummy = register_();结构体: Foo{静态字符 const get_dummy() { 返回 42;}}; (也在 Ideone 上.) 我希望 dummy 在有 Foo 的具体实
..
我有几行可以在我的系统上很好地编译,但不能在同事系统上编译.这就是为什么我想问这个问题的首选解决方案是什么样的.我必须处理一个 enum,它隐含地定义了我必须为 std::array 提供多少空间.代码的其他部分也使用 FooSize 是静态的.(优化) 我目前的实现是这样的 enum class FooType{短福,龙福};//定义在不同的文件中模板 类
..
我目前正在学习C ++,但遇到了一些麻烦. 我已经通过使用许多 #define 开发了一个程序,但是我想改用 static const (碰撞/类型/作用域...) 所以,我现在有类似的东西: file1.hpp A类{上市:静态const std :: string MY_CONST_VAR;}; file1.cpp const std :: string A ::
..
我在Internet上浏览了一些相关主题,例如此和类似此,此和此,但我一无所获.这是我的简化代码: MainActivity : 包com.test.staticvariables;导入android.app.Activity;导入android.os.Bundle;公共类MainActivity扩展了Activity {@Override受保护的void onCreate(Bundle
..
我最近遇到了漂亮的计数器成语.我的理解是,它用于在cout,cerr等标准库中实现全局变量.由于专家选择了它,因此我认为它是一种非常强大的技术. 我正在尝试了解使用像Meyer Singleton这样的东西有什么好处. 例如,一个人可能只是在头文件中: inline Stream&getStream(){static Stream s;返回s;}静态流流= getStream();
..
我有一个静态的指向函数的指针数组,该指针作为类的成员. 我需要对其进行初始化,但事实证明此数组的长度为64K,因此使用像{ x, y, z, ... }这样的静态初始化程序进行初始化是不切实际的,因为这样会使代码混乱. 我必须通过几个循环的代码来初始化它. 我想到的方法是通过在构造函数中初始化static数组并为其设置一个标志,因此只有构造该类的第一个实例时才会触发该初始化.
..
我们知道局部静态变量初始化在C ++ 11中是线程安全的,现代编译器完全支持此操作. (在C ++ 11中本地静态变量初始化线程安全吗? ?) 使其成为线程安全的代价是什么?我知道这很可能取决于编译器的实现. 上下文:我有一个多线程应用程序(10个线程),通过以下函数以很高的速率访问单例对象池实例,我担心它的性能含义. template ObjectPool
..
我想知道是否可以使用temp变量不调用void函数.例如.在以下代码块中... #include void earlyInit() { std::cout
..
这是对此帖子的类似问题.我认为最有希望的答案与模板化静态初始化有关.这是该答案的课程: template class create_map { private: std::map m_map; public: create_map(const T& key, const U& val) {
..
我正在使用Qt,但这是一个通用的C ++问题.我的情况很简单,我有一个Constants类,它具有一个恒定的静态成员,我希望在进行某些函数调用后对其进行初始化. Constants.h #ifndef CONSTANTS_H #define CONSTANTS_H class Constants { public: static const char* const FILE
..
假设我具有以下结构: struct myStruct { int x; int y; int z; int w; }; 我想在调用以下函数时将此结构初始化为默认值.如果有帮助,我正在寻找一个简单的零初始化. void myFunc(myStruct param={0,0,0,0}) { ... } 但是,此代码给了我编译错误.我已经尝试过VS2003和VS2008.
..
Ben Voigt 指出了 零初始化是静态初始化的步骤之一.但是您是对的,您不能盲目地替换后者(标签),因为对于值初始化也执行零初始化.但是,在C ++的上下文中,不需要进行零初始化(标记为零),因为静态初始化和值初始化都已经存在标记,并且它们更相关. 我认为在某些情况下,“零初始化" 而不是“静态初始化" 或还是“零初始化"永远不会在野外发生,并且我应该使用更具体的术语,例如:“静态初始
..
我最近遇到了一个奇怪的情况. 让我们考虑以下课程(放在header.h中): #ifndef HEADER_H #define HEADER_H #include template class Class { public: typedef std::set* > instances_li
..
首先,一个难题: 以下代码显示什么? public class RecursiveStatic { public static void main(String[] args) { System.out.println(scale(5)); } private static final long X = scale(10); private
..