草庐IT

Initialization

全部标签

c++ - 动态内存分配 - C++ 中原始类型的默认初始化

如果我分配一些原始类型的数组,例如double*v=newdouble[10];我需要知道,数组条目的初始值是多少。它是在标准还是编译器依赖中指定的,我在哪里可以找到它。谢谢,约翰内斯 最佳答案 不,数组内容未初始化。您需要使用double*v=newdouble[10]();为每个元素设置0的默认值(注意())。 关于c++-动态内存分配-C++中原始类型的默认初始化,我们在StackOverflow上找到一个类似的问题: https://stackover

c++ - 值初始化 : default initialization or zero initialization?

我已经模板化了gray_code类,该类旨在存储一些无符号整数,其基础位以格雷码顺序存储。这里是:templatestructgray_code{static_assert(std::is_unsigned::value,"graycodeonlysupportsbuilt-inunsignedintegers");//VariablecontainingthegraycodeUnsignedIntvalue;//Defaultconstructorconstexprgray_code()=default;//ConstructionfromUnsignedIntconstexprex

c++ - 值初始化 : default initialization or zero initialization?

我已经模板化了gray_code类,该类旨在存储一些无符号整数,其基础位以格雷码顺序存储。这里是:templatestructgray_code{static_assert(std::is_unsigned::value,"graycodeonlysupportsbuilt-inunsignedintegers");//VariablecontainingthegraycodeUnsignedIntvalue;//Defaultconstructorconstexprgray_code()=default;//ConstructionfromUnsignedIntconstexprex

c++ - 如何初始化一个unique_ptr

我正在尝试向我的类(class)添加延迟初始化函数。我对C++不是很精通。谁能告诉我我是如何实现的。我的类(class)有一个私有(private)成员定义为:std::unique_ptranimal;这是带有一个参数的原始构造函数:MyClass::MyClass(stringfile):animal(newAnimal(file)){}我刚刚添加了一个无参数构造函数和一个Init()函数。这是我刚刚添加的Init函数:voidMyClass::Init(stringfile){this->animal=???;}我需要在那里写什么才能使它等同于构造函数正在做的事情?

c++ - 如何初始化一个unique_ptr

我正在尝试向我的类(class)添加延迟初始化函数。我对C++不是很精通。谁能告诉我我是如何实现的。我的类(class)有一个私有(private)成员定义为:std::unique_ptranimal;这是带有一个参数的原始构造函数:MyClass::MyClass(stringfile):animal(newAnimal(file)){}我刚刚添加了一个无参数构造函数和一个Init()函数。这是我刚刚添加的Init函数:voidMyClass::Init(stringfile){this->animal=???;}我需要在那里写什么才能使它等同于构造函数正在做的事情?

C++11: "= {}"的类内初始化不适用于显式构造函数

在C++11中,我们可以使用“brace-or-equal-initializer”(标准中的词)进行类内初始化,如下所示:structFoo{/*explicit*/Foo(int){}};structBar{Foofoo={42};};但是如果我们取消注释explicit,它就不再编译了。GCC4.7和4.9是这样说的:error:convertingto‘Foo’frominitializerlistwoulduseexplicitconstructor‘Foo::Foo(int)’我觉得这很令人惊讶。这段代码不编译真的是C++11标准的本意吗?删除=修复它:Foofoo{42}

C++11: "= {}"的类内初始化不适用于显式构造函数

在C++11中,我们可以使用“brace-or-equal-initializer”(标准中的词)进行类内初始化,如下所示:structFoo{/*explicit*/Foo(int){}};structBar{Foofoo={42};};但是如果我们取消注释explicit,它就不再编译了。GCC4.7和4.9是这样说的:error:convertingto‘Foo’frominitializerlistwoulduseexplicitconstructor‘Foo::Foo(int)’我觉得这很令人惊讶。这段代码不编译真的是C++11标准的本意吗?删除=修复它:Foofoo{42}

c++ - 在 C、C++ 中的初始化中排序

考虑以下初始化:/*C,C++*/inta[]={f(),g()};struct{intx,y}foo={f(),g()};/*C++*/structgoo{goo(intx,inty);};goob={f(),g()};gooc{f(),g()};/*C++11*/good(f(),g());f()和g()的执行顺序是否在C和C++标准规定的任何行中? 最佳答案 在这两种情况下goob={f(),g()};gooc{f(),g()};/*C++11*/评估顺序是从左到右确定的,所有副作用都应在下一个初始化程序之前应用。来自C++标

c++ - 在 C、C++ 中的初始化中排序

考虑以下初始化:/*C,C++*/inta[]={f(),g()};struct{intx,y}foo={f(),g()};/*C++*/structgoo{goo(intx,inty);};goob={f(),g()};gooc{f(),g()};/*C++11*/good(f(),g());f()和g()的执行顺序是否在C和C++标准规定的任何行中? 最佳答案 在这两种情况下goob={f(),g()};gooc{f(),g()};/*C++11*/评估顺序是从左到右确定的,所有副作用都应在下一个初始化程序之前应用。来自C++标

c++ - 错误 C2361 : initialization of 'found' is skipped by 'default' label

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:Whycan'tvariablesbedeclaredinaswitchstatement?我在下面的代码中有一个奇怪的错误:charchoice=Getchar();switch(choice){case's':coutdisplaytree();break;case'i':cout>value;thetree->insert(value);break;case'f':cout>value;intfound=thetree->find(value);if(found!=-1)coutVisualStudio