草庐IT

static-members

全部标签

c++ - 如何初始化类型特征的静态 std::unordered_map?

给定以下类型特征,我如何用一些std::pair初始化Fields?templatestructManagerDataTrait{staticconststd::unordered_mapFields;//...};我尝试使用lambda,但VisualStudio说Fields不是可以明确专门化的实体。templateconststd::unordered_mapManagerDataTrait::Fields=[]{std::unordered_mapfields;fields.insert(std::make_pair("height","FLOAT"));fields.inse

c++ - 在结构/类中使用 static const int

structA{staticconstinta=5;structB{staticconstintb=a;};};intmain(){returnA::B::b;}上面的代码可以编译。但是,如果您阅读ScottMyers的《EffectiveC++》一书(第14页);除了声明之外,我们还需要a的定义。谁能解释为什么这是一个异常(exception)? 最佳答案 C++编译器允许staticconst整数(并且仅限于整数)在它们声明的位置指定它们的值。这是因为基本上不需要该变量,它只存在于代码中(通常是编译出来的)。其他变量类型(例如s

c++ - 什么是静态变量?

静态变量的用途是什么?staticint和int有什么区别? 最佳答案 static关键字有四个不同的用途,其中只有两个是密切相关的:全局和命名空间范围内的静态(适用于变量和函数)表示内部链接这被替换为unnamednamespaces并且与其他无关特别是,其他人倾向于暗示某种唯一性,但内部链接意味着相反:你可以有许多同名的对象,只要每个对象都有内部链接,而你只有每个翻译单元一个静态数据成员在类的所有实例中“共享”更像是它们独立于任何类实例这有时与静态方法组合在一起静态方法不“操作”当前实例没有this指针;可以在没有实例的情况下调

c++ - 在编译时在 static_assert() 中显示整数

这是我正在尝试做的简化版本enumFirst{a,b,c,nbElementFirstEnum,};enumSecond{a,b,c,nbElementSecondEnum,};static_assert(First::nbElementFirstEnum==Second::nbElementSecondEnum,"Notthesamenumberofelementintheenums.");/*static_assert(First::nbElementFirstEnum==Second::nbElementSecondEnum,"Notthesamenumberofelementi

c++ - 静态变量被初始化两次

假设我在一个编译单元中有一个静态变量,它最终出现在一个static库libA中。然后我有另一个编译单元访问这个变量,它最终在一个shared库libB.so中(所以libA必须链接到libB)。最后我有一个主函数也直接从A访问静态变量and依赖于libB(所以我链接到libAandlibB)。然后我观察到,静态变量被初始化了两次,即它的构造函数运行了两次!这似乎不对。链接器不应该将两个变量识别为相同的变量并将它们作为一个变量进行优化吗?为了让我的困惑更加完美,我看到它使用相同的地址运行了两次!所以也许链接器确实识别了它,但没有删除static_initialization_and_de

c++ - const_cast 与 static_cast

添加const到非常量对象,哪个是首选方法?const_cast或static_cast.在最近的一个问题中,有人提到他们更喜欢使用static_cast,但我会认为const_cast将使代码的意图更加清晰。那么使用static_cast的理由是什么?使变量成为常量? 最佳答案 也不要使用。初始化引用对象的const引用:Tx;constT&xref(x);x.f();//callsnon-constoverloadxref.f();//callsconstoverload或者,使用implicit_cast函数模板,例如theo

c++ - (*i).member 是否比 i->member 效率低

拥有structPerson{stringname;};Person*p=...假设没有运算符被重载。哪个更有效(如果有的话)?(*p).name对比p->name在我脑后的某个地方,我听到一些铃声,*解引用运算符可能会创建一个对象的临时拷贝;这是真的吗?这个问题的背景是这样的案例:Person&Person::someFunction(){...return*this;}我开始怀疑,如果将结果更改为Person*并在最后一行简单地returnthis会不会有什么不同(在性能上)? 最佳答案 没有区别。即使标准说这两者是等价的,如果

c++ - 对 `Static Class Member variable inside Static member function' 的 undefined reference

我实际上正在尝试实现分页的模拟,在我的内存管理器中,我尝试创建一个静态页表,但是当我尝试打印它时它给出了引用错误。#ifndefMEMORYMANAGER_H#defineMEMORYMANAGER_H#include"memory.h"classMemoryManager{private:PhysicalMemoryRAM;LogicalMemoryVM;intoffsetValue;staticint**pageTable;public:MemoryManager();booladdProcess(TimeSliceRequest);voidprintVirtualMemory()

c++ - 为什么类的静态成员函数没有 "const-correctness"的概念?

用例:classA{staticints_common;public:staticintgetCommon()const{s_common;};};通常这会导致错误:error:staticmemberfunction‘staticintA::getCommon()’cannothavecv-qualifier这是因为constness仅适用于this指向的对象,它不存在于static成员函数中。但是,如果允许的话,static成员函数的“常量”可能很容易与static数据成员相关。为什么这个特性在C++中不存在;背后有什么合乎逻辑的原因吗? 最佳答案

c++ - 为什么全局 const char 需要 "static"而 bool 不需要?

共享header。我能做到:constboolkActivatePlayground=false;包含在多个文件中时工作正常。我不能这样做:constchar*kActivePlayground="kiddiePool";导致错误:重复的符号。但这行得通:staticconstchar*kActivePlayground="kiddiePool";为什么constchar*需要static而constbool不需要?另外,我认为static不是必需的,因为const总是static隐式? 最佳答案 在C++中,const变量默认有静