草庐IT

初始化OpenStack

全部标签

c++ - POD成员默认初始化不带大括号

给定代码:structTest{inta=1;intb=2;};Testtest1;Testtest2{};对于test2,我确定test2.a==1和test2.b==2。test1(没有{})是否保证(或不)相同? 最佳答案 线Testtest1;等同于使用默认构造函数进行初始化,如果没有带有显式初始化列表且没有Test()=deleted;的手写构造函数,最终将设置两个成员为其指定的初始值1和2。“默认构造函数”是可以不带参数调用的构造函数,这正是上述语句的情况。您可以在standard中阅读默认构造函数的规则。-转到§12.

c++ - 为什么一个 ctor 不能调用另一个 ctor 来初始化对象

classFoo{public:Foo(){Foo(1)}Foo(intx,inty=0):i(x){}private:inti;}任何人都可以给我一些关于我可以这样做的理由吗?如果不是,为什么? 最佳答案 因为语言规范不允许。语言就是这样。如果您习惯使用Java或其他允许它的语言,那将非常烦人。但是,一段时间后您就会习惯它。所有语言都有其怪癖,这只是C++的其中一种。我相信规范的编写者有他们的理由。我发现最好的解决方法是创建一个通用的初始化函数并让两个构造函数都调用它。像这样:classFoo{public:Foo(){initi

c++ - 如何初始化类数组?

我有这个类的构造函数:Pairs(intPos,char*Pre,char*Post,boolAttach=true);如何初始化Pairs类数组?我试过:PairsHolder[3]={{Input.find("as"),"Pre","Post"},{Input.find("as"),"Pre","Post"},{Input.find("as"),"Pre","Post"}};显然它不起作用,我也尝试使用()括号而不是{}但编译器一直在提示。对不起,如果这是一个蹩脚的问题,我用谷歌搜索了很多但找不到答案:/ 最佳答案 显式调用构造

c++ - 何时为多态类初始化 vptr(指向 vtable)?

这与"WhenVTABLEiscreated?"无关.相反,应该在什么时候初始化VPTR?是在构造函数的开头/结尾还是在构造函数之前/之后?A::A():i(0),j(0)-->>here?{-->>here?//...-->>here?} 最佳答案 虚拟调用的机制(通常是一个v表,但不需要)是在ctor-initializer期间、基础子对象构造之后和成员构造之前设置的。[class.base.init]部分法令:Memberfunctions(includingvirtualmemberfunctions,10.3)canbec

c++ - 使用表达式初始化 char * 不起作用

以下代码产生了错误的输出:stringmy_string="My_First_Text";char*my_pointer=(char*)(my_string+"My_Second_Text").c_str();为什么?当我初始化my_pointer时,我假设不需要my_pointer=newchar[100]。如果这个假设不成立,那为什么呢? 最佳答案 注意my_string+"My_Second_Text"是一个临时的std::string,会在表达式后立即销毁。这意味着my_pointer将立即悬垂,因为它应该指向的char数组

c++ - 空指针和未初始化指针的区别?

为什么可以打印空指针的值而不能打印未初始化的指针?我的意思是当初始化一个指向nullptr的指针时,你只是明确地让指针指向任何地方,对吧?如果是这样,那不就等于没有初始化它,还是我错过了什么?谢谢!非常感谢! 最佳答案 指向无处和未初始化,是两个不同的概念。严格来说,未初始化的指针具有不确定值。它不是指向“无处”的特定位置或对象的指针。只是……“耸肩”。你还不能用它做任何事情。“‘无处’的具体位置??”我听到你在问。“这是什么胡说八道?”嗯,完全正确。这不是真的“无处可去”。空指针具有特定的值和特定的表示形式。它不指向一个对象,但它

c++ - 数组初始化在 C++ 中使用 const 变量

这可以工作:constintsize=2;intarray[size]={0};编译错误:inta=2;constintsize=a;intarray[size]={0};为什么? 最佳答案 因为C++委员会的人是这么决定的。技术原因是用于初始化size的第一个表达式是常量表达式,可以在编译期间计算。这意味着编译器还可以知道数组的大小,并且可以在编译时完成分配(在这种情况下,“保留”可能是一个更合适的术语)。在第二种情况下,表达式不是常量表达式(给定C++定义)并且这种还原是不可能的。在第二种情况下,值确实在size初始化时固定,这

【React教程】(1) React简介、React核心概念、React初始化

目录ReactReact介绍React特点React的发展历史React与Vue的对比技术层面开发团队社区NativeAPP开发相关资源链接EcmaScript6补充React核心概念组件化虚拟DOM起步初始化及安装依赖HelloWorldReactReact介绍React是一个用于构建用户界面的渐进式JavaScript库本身只处理UI不关系路由不处理ajaxReact主要用于构建UI,很多人认为React是MVC中的V(视图)。数据驱动视图React由Facebook开发第一个真生意义上把组件化思想待到前端开发领域angular早期没有组件化思想后来也被Vue学习借鉴了React起源于Fa

c++ - 传递引用未初始化变量是未定义的行为吗?

我有以下代码:#includevoidf(int&x){x=5;}intmain(){intx;f(x);std::cout此代码是否会调用C++中的未定义行为?g++在没有任何警告的情况下编译它,并且代码打印出5(如预期的那样?)。 最佳答案 此代码中没有未定义的行为。在为未初始化的变量赋值之前使用它是未定义的,但传递引用并通过引用执行赋值是明确定义的。 关于c++-传递引用未初始化变量是未定义的行为吗?,我们在StackOverflow上找到一个类似的问题:

c++ - 函数调用中的单元素 vector 初始化

考虑以下示例代码:示例:voidprint(intn){coutvec){coutv={2};/*call3*/print(v);/*call4*/print(std::vector{2});return0;}生成以下输出:elementprintelementprintvectorprintvectorprint为什么对print函数的调用(上例中的调用2)与接受单个值的函数相匹配?我在这个调用中创建了一个vector(包含单个元素),所以它不应该匹配以vector作为输入调用print吗?这是部分讨论inanotherquestion其中提供的解决方案适用于具有1个以上元素的vec