草庐IT

static-initializer

全部标签

c++ - static const 成员变量初始化

看起来我可以初始化一个POD静态常量成员,但不能初始化其他类型:structC{staticconstinta=42;//OKstaticconststringb="hi";//compileerror};为什么? 最佳答案 类定义中的语法initializer只允许用于整型和枚举类型。对于std::string,它必须在类定义之外定义并在那里初始化。structC{staticconstinta=42;staticconststringb;};conststringC::b="hi";//inoneofthe.cppfilesst

android - 我应该在哪里调用 MobileAds.initialize()?

我已阅读https://developers.google.com/admob/android/quick-start?hl=en-US#import_the_mobile_ads_sdk我需要使用代码A初始化MobileAds以显示AdMobAD。我有一些Activity需要展示广告,是否需要在所有Activity中添加代码A?还有,为什么即使我删除了AdMob广告也能正确显示MobileAds.initialize(this,"YOUR_ADMOB_APP_ID")代码Aimportcom.google.android.gms.ads.MobileAds;classMainActi

android - 我应该在哪里调用 MobileAds.initialize()?

我已阅读https://developers.google.com/admob/android/quick-start?hl=en-US#import_the_mobile_ads_sdk我需要使用代码A初始化MobileAds以显示AdMobAD。我有一些Activity需要展示广告,是否需要在所有Activity中添加代码A?还有,为什么即使我删除了AdMob广告也能正确显示MobileAds.initialize(this,"YOUR_ADMOB_APP_ID")代码Aimportcom.google.android.gms.ads.MobileAds;classMainActi

c++ - 头文件中的 `static` , `extern` , `const`

//a.hexternintx1;staticintx2;intx3;staticconstintx4;classA{public:staticconstintx5=10;};a.h会被多个.cpp文件包含,我的问题是:1.x1只是一个声明,不是吗?所以它的定义应该在那些.cpp文件之一中完成,对吧?2.x2是一个定义,对吧?我曾经认为staticint和externint一样也是一个声明,但我错了。x2将仅在a.h中可见?3.如果a.h包含在多个.cpp文件中,x3会被定义多次,所以x3会导致编译错误,对吧?4.x4是一个定义,对吧?5.这里在A类中,x5是一个声明,是的。但是x4呢

c++ - 为什么我们使用 static_cast 为 NULL

当我尝试研究QP/CPP代码时,我遇到了以下行。QTimeEvt*t;//...if(t==static_cast(0)){为什么他们要做0的static_cast?如果他们想检查NULL,我们可以直接这样做吗?这个源代码你可以在中找到http://www.state-machine.com/qpcpp/qf__time_8cpp_source.html 最佳答案 是的,这是不必要的,尽管它可能是某些风格指南为了“清晰”而强制要求的,或者它可能是为了让过度热心的静态分析工具沉默。当然,如今,我们只需编写nullptr就可以了。

C++ : initialize static member large array

为了在C++中使用静态数据成员,我目前有类似的东西://HEADERFILE.hclassMyClass{private:staticdoublemyvariable;};//CPPFILE.cppdoubleMyClass::myvariable=0;但如果现在我有://HEADERFILE.hclassMyClass{private:staticdoublemyarray[1000];};如何初始化它?谢谢 最佳答案 和初始化普通数组一样:doubleMyClass::myarray[1000]={1.1,2.2,3.3};缺少

c++ - 错误 : cannot specify explicit initializer for array

我正在使用VisualStudios2013,但我一直收到此错误,但我不明白为什么。classCLI{stringcommands[2]={"create","login"};public:voidaddCommand(),start(),getCommand(string);};错误:errorC2536:'CLI::CLI::commands':cannotspecifyexplicitinitializerforarrays 最佳答案 VisualStudio2013并不完全符合C++11,因此,正如TobiasBrandt所

c++ - std::strings 的 std::initializer_list 的奇怪行为

这个问题很可能已经有人问过了,但我没有找到答案。下面的代码用gcc编译但在运行时崩溃,出现std::length_error(live)。voidtest(conststd::string&value){std::cout&){std::cout从字符串的初始值设定项列表创建字符串的能力似乎存在争议,例如,无法创建上面代码中注释掉的重载。但即使允许这样的构造,为什么会导致失败呢? 最佳答案 它调用string(constchar*b,constchar*e)字符串构造器重载。它仅在b和e指向相同的字符串文字时有效。否则就是未定义的行

c++ - "static"在 C 和 C++ 中表示没有外部链接的函数/变量是怎么发生的?

在C中,static可以表示局部变量或没有外部链接的全局函数/变量。在C++中,它也可以表示每个类的成员变量或成员函数。有没有提到如何使用看起来与缺少外部链接完全无关的static关键字来表示缺少外部链接? 最佳答案 使用已经存在的关键字的优点是不会向语言添加新的关键字,这可能会破坏现有的程序。它可能令人困惑,但它被认为是一种“较小的邪恶”。 关于c++-"static"在C和C++中表示没有外部链接的函数/变量是怎么发生的?,我们在StackOverflow上找到一个类似的问题:

c++ - C/C++ : What is the difference between a statically-linked library and an object file?

我知道编译时包含在可执行文件中的代码可能来自目标文件(.o文件)和静态链接库(.lib/.a文件)。这两者在根本上和概念上有什么区别?为什么“目标代码”和“静态链接库”之间有不同的概念?各自的优点和缺点是什么,为什么要使用一个而不是另一个?静态链接库是否可以从目标文件生成,反之亦然,目标文件是否可以从静态链接库生成? 最佳答案 目标文件是已编译但未链接的代码。库包含目标文件。因此你的问题变成了,“如果我只能使用目标文件,为什么要使用静态链接库?”原因如下。与对象集合不同,每个对象都有自己的符号表,库有一个单一的、统一的符号表,在库调