static-members相关内容

C ++静态变量初始化顺序

1)如果我没记错的话,C ++标准保证单个转换单元中的静态变量按其定义顺序进行初始化.我对以下代码片段感到困惑: extern int n; int k = n; int n = 2; extern int n;是声明,而不是定义,因此k是在n之前定义的,但是GCC,Clang和MSVC都向我显示了在初始化全局变量之后的k == 2.对我来说,目前尚不清楚如何在int k = n;之后为 ..

静态类成员/类引用的生命周期?

我要求展示如何为特殊记录器的旧栗子做类似单例的解决方案。我仍然不遗余力地指出不做这种事情的原因。 这样做,我有一个静态的类成员意外消失了。 p> 使用此类声明: epiLogger.py: 导入日志 类epiLogger(): _initialized = {} _finalised = {} def __init __(self,name): self ..
发布时间:2020-10-21 02:49:25 Python

类装饰器声明静态成员(例如,对于log4net)?

我使用的是log4net,我们的代码中包含很多内容: 公共类Foo { 私有静态只读ILog日志= LogManager.GetLogger(typeof(Foo)); .... } 一个缺点是,这意味着我们重新粘贴整个10个单词的部分,然后时不时有人忘记更改类名。 log4net常见问题解答也提到了这种替代可能性,甚至更冗长: 公共类Foo { priv ..
发布时间:2020-10-19 21:07:59 C#/.NET

从静态基类方法调用子类构造函数

好吧……在目标C中,您可以使用“ new this()”从基类的静态方法中创建一个子类,因为在静态方法中,“ this”是指该类,而不是实例。当我第一次发现它并且经常使用它时,这真是一个非常酷的发现。 但是,在C#中不起作用。 所以...有人知道我如何从静态基类方法中“新建”一个子类吗? 类似这样的事情…… 公共类MyBaseClass { 字符串名称; 公共静态 ..
发布时间:2020-10-08 19:44:39 C#/.NET

C ++模板:全局对象中的静态成员未初始化

我有一段简单的C ++代码,其中我通过专门化模板定义了模板和全局对象。对象构造函数访问专用模板中的静态成员。但事实证明,静态成员当时尚未初始化。但是对于本地对象(在函数主体中定义),它可以工作。我很困惑... 我的c ++编译器是:g ++(Ubuntu 5.4.0-6ubuntu1〜16.04.4)5.4.0 20160609 //////////////////////// 模 ..
发布时间:2020-10-08 19:21:31 C/C++开发

何时在C ++中调用模板类的静态成员的构造函数?

关于何时调用普通类的静态成员的构造函数,有很多信息。但是,我看到一些有关模板类的奇怪行为。 以下程序的输出应该是什么? (请注意,我使用printf可以避免任何带有std :: cout的静态初始化订单惨败的并发症。) #include B类{ public: B(const std :: string& s){printf(“你好,我是%s\n的B ..
发布时间:2020-10-08 19:15:08 C/C++开发

使用成员函数作为回调

我想将成员函数用作回调(使用此函数): glfwSetCursorPosCallback(window,(GLFWcursorposfun)(MyClass :: mouseButtonChanged)); 我知道这是不可能的,因为我需要 MyClass的实例调用方法 mouseButtonChanged 。 但是我该怎么办? 解决方案 您可以使用 g ..
发布时间:2020-09-28 23:57:50 C/C++开发

在不是struct方法的函数上实现缓存的惯用方式是什么?

我有一个像这样的昂贵函数: pub fn get_expensive_value(n:u64):u64 { 让ret = 0; for 0 .. n { //昂贵的东西 } ret } 并且使用相同的参数会经常调用它。它是纯的,这意味着它将返回相同的结果并可以利用缓存。 如果这是一种struct方法,我会在该结构中添加一个成员,该成员充当缓存,但不 ..
发布时间:2020-09-28 06:18:38 其他开发

类模板静态数据成员的定义/声明/初始化

我知道这个问题已经问过几次了,我一直在阅读以下文章: 初始化模板化类的静态成员 如何声明/定义/初始化静态成员模板类的变量作为类的静态成员变量? 但是,我仍然在努力将所有有关模板,专业化,静态数据成员的定义和声明的内容。 我所拥有的类似于: template struct A { static std :: array ..
发布时间:2020-09-28 00:08:35 C/C++开发

在类模板中正确初始化静态constexpr数组?

由于标准的困扰,C ++中的静态类成员对我造成了一些困惑: 9.4.2静态数据成员 [class.static.data] 在其类定义中声明静态数据成员不是定义... 但是在其声明时(例如,在 constexpr 中需要初始化 constexpr ) 由于对constexpr的限制,我实际上已经忘记了在类外定义静态成员的必要条件,直到尝试访问静态constexpr数组为止。 ..
发布时间:2020-09-27 21:36:43 C/C++开发

声明为私有时的静态成员变量

当静态成员变量在类中声明为私有时,如何定义它? 假设我有以下类声明 class static_demo { private: static int a; public: static int b; void set(int x,int y) { a = x; b = y; } void show() { cout ..
发布时间:2020-09-27 05:37:05 C/C++开发

静态成员变量如何影响对象大小?

我想知道静态成员变量通常是如何在C ++等语言中实现的,以及它们的使用是否会影响实例化对象的大小。 我知道一个静态成员由该类的所有实例共享,但是如何共享?如果它影响对象的大小,那么有10个静态变量会增加大于1的大小吗? 我问,因为我可以想到实现它的两种方式: 向每个对象添加指向静态数据的指针,类似于某些实现为虚拟函数表添加指针的方式 静态数据就像全局变量一样直接引用,偏移量由链 ..
发布时间:2020-09-27 01:09:43 C/C++开发