草庐IT

初始化OpenStack

全部标签

C++ 默认构造函数不初始化指向 nullptr 的指针?

我想知道我的类中是否有一个A*成员,如果我有一个这种形式的类的构造函数,我们不应该自动设置为nullptr:classMyCLass{A*m_pointer;public:MyCLass(){}};我在C++11中执行MyCLass*o=newMyCLass;还是执行MyCLass*o=newMyCLass();有关系吗? 最佳答案 指针是“POD类型”……又名。“普通旧数据”。此处总结了何时何地对它们进行默认初始化的规则:DefaultinitializationofPODtypesinC++所以没有。如果类的构造函数是作为类成员

c++ - 在 C++ 中初始化一对数组

我想用下面的方式初始化一对数组:pairadjs[4]={{current_node.first-1,current_node.second},{current_node.first+1,current_node.second},{current_node.first,current_node.second-1},{current_node.first,current_node.second+1}};但是我的编译器Code::Blocks12.1不断抛出错误:brace-enclosedinitializerusedtoinitialize`std::pair'|我以前在在线编译器上使

c++ - 这个 unique_ptr 的初始化有什么问题?

有人能告诉我,unique_ptr的以下初始化有什么问题吗?intmain(){unique_ptrpy(nullptr);py=newint;....}g++-O2xxx.cc-lm-oxxx-std=c++11说:error:nomatchfor‘operator=’(operandtypesare‘std::unique_ptr’and‘int*’)py=newint;^做unique_ptrpx(newint);工作得很好。 最佳答案 两段代码的初始化都很好,unique_ptr有constructors对于nullptr和

c++ - 使用对嵌入的双端队列成员的引用初始化的树元素会为此导致 nullptr

followingprogram尝试创建由对std::deque的引用组成的节点树元素。#includestructNode;usingPool=std::deque;structNode{Node(intd,Pool&pool):level{d},l{d>0?pool.emplace_back(d-1,pool):*this},r{d>0?pool.emplace_back(d-1,pool):*this}{}intlevel;constNode&l;constNode&r;intcheck()const{if(!(&l==this))returnl.check()+1+r.chec

如何使用构造函数初始化内存地址(指针变量)?

笔记:1)人是学生的基类2)人名称为唯一的数据变量3)学生包含社会。该协会充当指向文本字符串的指针,其中包含学生俱乐部的名称。我很难理解第四行:intmain(){Person*p1;p1=newStudent("John","DramaSociety");//Thislinedeletep1;}P1是否指向堆中的内存地址?据我所知,指针变量只是内存中的32位或64位(系统依赖性)位置。如何像类型人的对象一样初始化它?我知道我的概念错了,请帮助我找到他们:(看答案发生的事情是呼吁new分配aStudent对象在堆上,然后返回指针。然后,您将该指针分配给p1。所以p1现在指向Student对象在

c++ - 未初始化的数据行为是否明确规定?

注意:我使用的是g++编译器(我听说它非常好,应该非常接近标准)。我有我能想到的最简单的类:classBaseClass{public:intpub;};然后我有三个同样简单的程序来创建BaseClass对象并打印出它们数据的[uninitialized]值。案例一BaseClassB1;cout打印出来:B1.pub=1629556548这很好。我实际上认为它会被初始化为零,因为它是POD或普通旧数据类型或类似的东西,但我想不是吗?到目前为止一切顺利。案例2BaseClassB1;cout打印出来:B1.pub=1629556548B2.pub=0这绝对是奇怪的。我以完全相同的方式创

c++ - 我真的可以用圆括号初始化数组吗?

偶尔,我在我的程序代码的一处打错了字:inta=10;char*b=newchar(a);错误很明显:我写的是()而不是[]。奇怪的是......代码编译正常,它在调试器中运行正常。但是在执行带有这些行的函数后,在调试器外部编译的.exe崩溃了片刻。第二行代码真的合法吗?如果是,这对编译器意味着什么? 最佳答案 这是一个数值为a的单个字符,在本例中为10。您知道,指针不仅仅指向数组。 关于c++-我真的可以用圆括号初始化数组吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么在初始化和调整对象 vector 大小时调用析构函数?

我的程序中发生了一些事情,我无法确定它是否应该发生。如果是,我不明白为什么..代码如下:#include#includeusingnamespacestd;classA{public:A();~A();};A::A(){cout>vec;vec.resize(5);for(inti=0;i这是输出:creatingdeletingcreatingdeletingcreatingdeletingcreatingdeletingcreatingdeletingENDdeletingdeleting[..moredeletinghere]我理解为什么在“END”消息之后调用析构函数,但之前我

c++ - 尾随返回类型中的占位符是否会覆盖初始占位符?

g++似乎接受auto和decltype(auto)的任意组合作为初始和尾随返回类型:inta;autof(){return(a);}//intautog()->auto{return(a);}//intautoh()->decltype(auto){return(a);}//int&decltype(auto)i(){return(a);}//int&decltype(auto)j()->auto{return(a);}//intdecltype(auto)k()->decltype(auto){return(a);}//int&但是,clang拒绝j和k,说:error:funct

c++ - 初始化 bool 的内联 vector

我正在使用这个例子来初始化boolvector:#include#include#includeusingnamespacestd;intmain(){map>myMap;vectorone{true,true,false};myMap[2]=one;cout我在此代码中所做的唯一更改是使用std::vector而不是vector,我现在拥有:std::map>m_links;std::vectorm_allFalse{false,false,false,false,false};它告诉我在m_allFalse之后使用;。我怎样才能摆脱这个错误?我使用的是intel编译器14,但没有c