草庐IT

Initialization

全部标签

c++ - 在 C++ 中初始化静态数组

我有这些类(class):classFS{staticcharmount(Partition*p){returnmyImpl->mount(p);}/*...*/KernelFS*myImpl;};classKernelFS{charmount(Partition*p){/*...*/while(available[i])i++;}/*...*/staticboolavailable[26];};主程序只使用FS的静态函数,例如:voidmain(){Partition*p=/*...*/;FS::mount(p);/*...*/}当调用FS::mount(p)时,它会调用myImpl

c++ - 初始化数组时使用(或不使用)括号

在我正在阅读的C++代码中,有一些数组被初始化为int*foo=newint[length];还有一些喜欢int*foo=newint[length]();我的快速实验无法检测到这两者之间的任何区别,但它们是紧挨着彼此使用的。有区别吗?编辑;因为有人断言第一个应该给出不确定的输出,所以这里是一个显示可疑数量0的测试;[s1208067@hobgoblintestCode]$catarrayTest.cc//Testhowarrayinitilizationworks#includeusingnamespacestd;intmain(){intlength=30;//Withoutpar

c++ - 函数指针总是初始化为 NULL 吗?

我正在使用MSVC,看起来下面的代码没有崩溃,函数指针被编译器初始化为NULL。int(*operate)(inta,intb);intadd(inta,intb){returna+b;}intsubtract(inta,intb){returna-b;}intmain(){if(operate)//wouldcrashhereifnotNULL{cout所以MSVC似乎将函数指针初始化为NULL,但如果我在Linux中的gcc上构建它,它是否也会为NULL?它是传统的还是特定于MSVC的,无论我走到哪里,我都可以依赖它为NULL吗?谢谢 最佳答案

c++ - 为什么这里调用的是 Copy Constructor 而不是普通的 Constructor 和重载的赋值运算符?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:IsthereadifferenceinC++betweencopyinitializationanddirectinitialization?CopyconstructorsandAssignmentOperators我有一个C类,我在其中重载了Normal、复制构造函数和赋值运算符以打印被调用内容的踪迹。我写了以下代码来测试什么时候被调用?Cc1;-->NormalConstuctor..//understoodFineCc2;c2=c1;-->Normalconstructor+assignmentop

c++ - 在 C 或 C++ 中是否使用未初始化的指针?

在thisquestion的评论之一中,有人指出默认情况下初始化C++指针会破坏与C的兼容性。这很好,但为什么这样的事情很重要?我认为唯一真正重要的是我是否出于某种原因想要一个未初始化的指针。但我想不出我想要它的原因。未初始化的指针有什么用吗?还是兼容性问题仅仅是一种兼容行为(即不增加开销)而不是破坏代码? 最佳答案 这是一个非常专业的视频游戏优化案例(基本上是一个嵌入式系统)。我们过去常常将它们用于视频游戏中的就地加载数据行为,以加快加载速度(并避免碎片化)。基本上,我们会在PCcooker中创建控制台端(Playstation)

c++ - 为什么 clang++ 报告与 "value stored to ' .. .' during its initialization is never read"的结构化绑定(bind)?

我有以下测试用例:testcase("[room]exits"){auto[center,east,north,south,west]=make_test_rooms();check_eq(center->east(),east);check_eq(center->north(),north);check_eq(center->south(),south);check_eq(center->west(),west+1);}当我编译它时,clang++(clangversion5.0.1(tags/RELEASE_501/final))报告:room.cpp:52:7:note:Valu

c++ - 我的以下断言是否正确?

在他的新书“TCPL”的第10.4.3节中,B.Stroustrup写道:Asufficientlysimpleuser-definedtypecanbeusedinaconstantexpression.Forexample:structPoint{intx,y,z;constexprPointup(intd){return{x,y,z+d};}constexprPointmove(intdx,intdy){return{x+dx,y+dy};}//...};Aclasswithaconstexprconstructoriscalledaliteraltype.Tobesimplee

c++ - 了解类对象构造

我正在阅读N3797的第12.7条。给出以下示例:structX{inti;};structY:X{Y();};//non-trivialstructA{inta;};structB:publicA{intj;Yy;};//non-trivialexternBbobj;B*pb=&bobj;//1int*p1=&bobj.a;//2undefined,referstobaseclassmemberint*p2=&bobj.y.i;//3undefined,referstomember’smemberA*pa=&bobj;Bbobj;externXxobj;int*p3=&xobj.i;

c++ - Type t = Type() 是否调用复制构造函数?

我真的很困惑....Typet=Type()是否调用复制构造函数?我问是因为当我尝试时:#includeclassTest{public:Test(Testconst&){std::cout什么都没有输出,但是当我把它改成#includeclassTest{Test(Testconst&){std::cout我得到:errorC2248:'Test::Test':cannotaccessprivatememberdeclaredinclass'Test'这没有意义(特别是因为这是一个调试版本)。更新:即使这样也可以编译!structTest{Test(Test&&)=delete;Te

c++ - 成员初始化列表符号 : curly braces vs parentheses

考虑pg中的以下代码片段。17的C++之旅:classVector{public:Vector(ints):elem{newdouble[s]},sz{s}{}//constructaVectordouble&operator[](inti){returnelem[i];}//elementaccess:subscriptingintsize(){returnsz;}private:double*elem;//pointertotheelementsintsz;//thenumberofelements};这里我关心的是第三行的成员初始化列表,其中Stroustrup将冒号与两个初始化