草庐IT

初始化OpenStack

全部标签

c++ - 为什么变量用最大值而不是零初始化

多年没有用C++,现在用test写c++项目。当我开始调试时,我发现奇怪的是,默认情况下变量没有初始化为零。例如,当我观察我的类未初始化变量(unsignedint)时,我看到它的值3452816845instedofexpectedzeo...这会导致单元测试出错。我使用这样的初始化:TEST_METHOD(TestPlus){Entity*entity=newEntity();entity->mCreateOperator(entity->Plus);entity->SetContactValue(1);entity->SetContactValue(2);entity->mPro

c++ - 通过结构指针将结构的成员初始化为零

typedefstruct{doublefirstArray[3];doublesecondArray[4][4];boolthirdArray[2];}myStruct;我知道我们可以使用intmyArray[10]={0};在一行中将数​​组的所有值初始化为零我有一个函数可以将myStruct中数组的所有元素初始化为零和false(对于bool)。voidinitializeElementsOfStruct(myStruct*str){str->firstArray[0]=0.0;str->firstArray[1]=0.0;str->firstArray[2]=0.0;...}除

c++ - 在类初始化和初始化列表中

我最近发现你不能同时拥有类初始化和初始化列表。以下代码失败:structs{inti=0;};intmain(){ss1;//s1.i=0//ss2={42};//failsreturn0;}如果我删除类内初始化,初始化列表就可以正常工作!有人能解释一下为什么不允许这样的事情吗? 最佳答案 事实上,这在C++14中是允许的。structs{inti=0;};intmain(){ss1;ss2={42};//succeeds}很可能您的编译器没有在C++14中实现新规则。然而,最新版本的clang接受这一点并在C++14模式下做正确的

c++ - 根据标准,std::vector 是否受静态初始化顺序问题的影响?

我可以在非Pod静态数据成员构造函数的构造函数中安全地将内容存储在vector中吗?示例:classFoo{public:staticFoo&instance(){staticFooinst;returninst;}voidstore(intx){numbers.push_back(x);}private:Foo(){}std::vectornumbers;};classBar{public:Bar(){Foo::instance().store(5);}};classThing{public:staticBarbar;};//inthing.cpp:BarThing::bar;上述代

c++ - 使用初始化列表来初始化字段和在构造函数中初始化它们有什么区别?

在一些教程中(例如http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm),我读到以下两个代码是等效的。第一个代码:classMyClass1{public:inta;intb;MyClass1(inta,intb):a(a),b(b){};};第二个代码:classMyClass2{public:inta;intb;MyClass2(int,int);};MyClass2::MyClass2(inta,intb){this->a=a;this->b=b;}事实上,他们给我的结果是一样的。但是,如果我

c++ - 在类中初始化字段的原因是什么?

在C++中,可以直接在类中初始化类字段的值,例如:classX{inta=5;}这是什么原因呢?它在哪里有用?默认的ctor做的完全一样。而且我似乎无法使用位掩码(inta:3)初始化值。 最佳答案 来自theauthority(这与早期的标准提案N2756非常相似):In-classmemberinitializersInC++98,onlystaticconstmembersofintegraltypescanbeinitializedin-class,andtheinitializerhastobeaconstantexpre

c++ - vector 对统一初始化

我有一个集合定义为-usingParameters=std::vector;usingGroup=std::pair;std::vectorinputs;我的意图是使用像这样的语句inputs.push_back(group0/*Whatgoesinhere?*/);inputs.push_back(group1/*Whatgoesinhere?*/);如何使用初始化列表初始化group0和group1?像这样的代码似乎不起作用inputs.push_back(std::make_pair("group0",{1,2,3,4}));编辑:有关于vector对初始化的问题,但我看不到st

c++ - 初始化和赋值,从引用传递

好的,这只是一个小警告。我目前正在使用来自ESRI的可爱的ArcSDK。现在要从它们的任何函数中获取值,您基本上必须传递要将值分配给的变量。例如:longoutput_width;IRasterProps->get_Width(&output_width);这是一件小事,但是当你必须从它们的杂项功能中挑选出大约30条不同的数据时,它真的开始变得烦人了。所以我想知道是否有可能通过STL或C++的魔力将其更改为:longoutput_width=IRasterProps->get_Width();所有函数都返回void,否则它们中的一些可能会返回HRESULT,我可以安全地忽略它。有什么想

c++ - 在 C++ 中的另一个类中初始化类?

我在头文件中有这个定义:classOwner{private://FieldsChild*_myChild1;public://ConstructorsOwner();Owner(constcharchildName[]);};和这个实现:Owner::Owner(constcharchildName[]){//dosomeoperations-childrenmustbecreatedaftertheseops_myChild=newChild(childName);}和这个main()函数:intmain(){Owner("child1");}有些问题,请耐心等待,我刚刚开始使用C

c++ - 用成员初始化成员

这是我经常遇到的问题。下面的例子说明了这一点:structA{intm_SomeNumber;};structB{B(A&RequiredObject);private:A&m_RequiredObject;};structC{C();private:Am_ObjectA;Bm_ObjectB;};C的构造函数的实现如下所示:C::C():B(m_ObjectA){}由于未定义初始化顺序,当调用m_ObjectB的构造函数时,m_ObjectA可能未初始化,从而导致未定义的行为。强制执行特定顺序的一种方法是使成员成为指针并在构造函数主体中初始化它们,从而强制执行正确的顺序,但由于多种原