草庐IT

初始化OpenStack

全部标签

C++:将指针设置为 nullptr 与将其初始化为新变量类型之间的区别

我正在学习C++,我知道“new”关键字用于将内存中的地址分配给指针。而且我认为在使用“nullptr”时会初始化一个指向任何内容的指针。那是对的吗?引用示例://usingnullptrint*x=nullptr;//thisisjustapointerthatpointstonothingand//willneedtobeinitializedwithanaddressbeforeit//itcanbeused.Correct?//usingnewint*x=newint;//thisisbasicallygivingxanaddressinmemory.Willthe//addr

c++ - C++初始化中的 "several values"是什么?

这是一道关于C++Primer(5thedition)Chapter3.2,Page84,85的问题。Whenwehaveasingleinitializer,wecanuseeitherthedirectorcopyformofinitialization.Whenweinitializeavariablefrommorethanonevalue,suchasintheinitializationofs4,wemustusethedirectformofinitialization:strings4(10,'c');//s4is"cccccccccc"strings5="hiya";

c++ - 无法识别初始化类型

我看到这段代码,意识到我记不起使用的初始化类型,也记不起它的假定行为。Pointp=(3,2);似乎只将后一个值(在本例中为2)作为参数传递给构造函数,因此PrintOut显示类似x=2y=5而不是预期的x=3y=2classPoint{public:Point(intx=5,inty=5):a(x),b(y){};voidprintOut()const{cout 最佳答案 因为Pointp=(3,2);不是用2个参数调用构造函数,而是用1个参数调用它,2。这是因为逗号运算符,它基本上会丢弃第一个表达式(3)的结果,并返回最后一个(

c++ - 在 C++17 中,是否可以使用带有初始值设定项的 if 语句来解包可选?

我正在使用std::optional编写一些代码,我想知道C++17的“带有初始化器的if语句”是否能够帮助解包值?std::optionaloptionalInt=GetOptionalInt();我在这里编写函数Unpack:if(auto[value,has_value]=optionalInt.Unpack();has_value){//Usevaluehere.}但是,我的问题是。C++17“带有初始化程序的if语句”在这里有帮助吗?如果是这样,它将如何编码?更新,这实际上主要是使用optional时的一个问题,它非常容易被滥用,因为optional和*optional都返回

c++ - 当返回一个用花括号初始化列表初始化的对象时,我能保证一对构造函数和析构函数调用吗?

以下面的类为例#includeusingnamespacestd;classA{private:inta_;intb_;A(constA&)=delete;A&operator=(constA&)=delete;A(A&&)=delete;A&operator=(A&&)=delete;public:A(inta,intb):a_{a},b_{b}{coutItgivestheexpectedresult.构造对象,执行操作,然后销毁。但是,我担心这是否得到保证。我主要担心的是,由于标准赋予编译器的自由,我是否会看到我不知道的任何效果。我不认为复制省略是这里的一个因素,因为所有移动和复

c++ - 使用保留 vector 初始化 vector 的 vector

我有一个vector的vector:std::vector>v;我想用5个项目(T的5个vector)初始化这个vector。这些vector中的每一个都将包含0到10个项目。显然,我需要内部vectorreserved为10而不是sized为10。我不需要发生不必要的重新分配或复制。换句话说,我需要位置构造。因为std::vector没有提供一个构造函数来保留所需数量的项目,我想出了这个主意:std::vector>v(5,[](){std::vectortemp;temp.reserve(10);returntemp;}());问题:有效吗?这是否包含未定义的行为?我是否真的最大限

c++ - 为什么一个 const Class& 可以被初始化为自身?

今天我遇到了一个非常愚蠢但难以检测的错误。相关代码如下:classVector;classPointIterator{constVector&x;constVector&yv;PointIterator(constVector&xv,constVector&yvo):x(xv),yv(yv){;};//^^hereiswrong};为什么这样的代码是合法的C++?在任何情况下都可以使用yv变量吗?我知道关于intx=x+1;的类似问题,(请参阅thisquestion)但后者未正确初始化,您仍然可以使用x变量,而在上面的代码中,我认为您不能使用yv。奖励点:是否有任何编译选项可以让我检

【C++】const、static关键字和构造函数初始化

💗个人主页💗⭐个人专栏——C++学习⭐💫点击关注🤩一起学习C语言💯💫目录1.const修饰成员函数1.1语法格式1.2权限放大缩小1.3思考1.4解答2.再谈构造函数2.1构造函数体赋值2.2初始化列表2.3explicit关键字3.static成员3.1静态变量3.2静态函数3.3 静态成员变量1.const修饰成员函数将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。1.1语法格式在成员函数的声明中使用const关键字的语法格式为:返回类型函数名()const;在成员函数的定

c++ - 当类没有 constexpr 构造函数时简化冗余 std::array 初始化

我有以下代码的更复杂版本:#include#includeusingnamespacestd;classDummy{public:Dummy(constdoublea,constdoublef){//Somecomplexcalculations}};constexprdoublevalues[]{0.1,0.2,0.3,0.4};constexprautoN=sizeof(values)/sizeof(values[0]);staticconstarraydummies{Dummy(10*values[0],M_PI*0),Dummy(10*values[1],M_PI*1),Dum

c++ - 如何从成对的初始化列表构造对象?

在这段代码中,我尝试使用pair(int,pair(string,string))的initializer_list来初始化类对象,但是在初始化map(int,pair(string,string)类型的类成员map2时出现错误).这是我的代码#include#include#include#includeusingnamespacestd;classcontact{private:map>map2;public:contact(initializer_list>>m):map2(m){}voiddisplay(){for(constauto&it:map2){cout