草庐IT

初始化OpenStack

全部标签

c++ - 这里保证静态初始化吗?

看这段代码:structFoo{void*ptr;constexprFoo():ptr(nullptr){}};Foof;是否保证f会被静态初始化?Clang在这里使用静态初始化,但是MSVCdoesn't. 最佳答案 是的,标准说f将被常量初始化:[basic.start.init]/2:Aconstantinitializerforanobjectoisanexpressionthatisaconstantexpression,exceptthatitmayalsoinvokeconstexprconstructorsforoa

c++ - 静态内联变量是否需要在main之前初始化?

如果我有以下A.h文件(仅header):#pragmaoncestructA{staticinlinestructInitializer{Initializer(){std::cout#include"A.h"(来自另一个header,将包含在main.cpp中)是否足够,所以Initializer::Initializer()之前被调用main()?我读到标准要求仅在使用前使用动态初始化来初始化静态变量。Itisimplementation-definedwhetherornotthedynamicinitialization(8.5,9.4,12.1,12.6.1)ofanobj

c++ - 有条件地使初始化列表中的 shared_ptr 为 null

我处于这样一种情况,我需要使shared_ptr为null或包含类Bar的实例。下面的方法不起作用,因为Bar和nullptr不是同一类型。怎样才能做到这一点?classBar{};classFoo{private:shared_ptrb;public:Foo():b(true?Bar():nullptr){}}; 最佳答案 b(true?std::make_shared():nullptr) 关于c++-有条件地使初始化列表中的shared_ptr为null,我们在StackOverf

c++ - 默认初始化(c++14)时是否对 POD 进行了特殊处理?

为什么下面的代码产生0作为输出?在我的理解中,它是默认初始化(不是值初始化),所以值应该是随机的。#include#include#includeusingnamespacestd;structA{inti;intj;};intmain(){Aa;cout来自cppreference:默认初始化的效果是:如果T是非POD(C++11前)类类型,则考虑构造函数并对空参数列表进行重载决议。调用选择的构造函数(默认构造函数之一)为新对象提供初始值;如果T是数组类型,则数组的每个元素都被默认初始化;否则,什么都不做:具有自动存储持续时间的对象(及其子对象)被初始化为不确定的值。

c++ - GET 请求的 TLS 初始化失败

我从qt/c++开始,在我的项目中我需要制作一个jsonpost/get/put但我正在尝试做一个简单的get请求但我有一个错误:qt.network。ssl:QSslSocket::connectToHostEncrypted:TLS初始化失败我不知道为什么,我尝试了一些方法,但都放了同样的信息。我附上我使用的代码。主窗口.cpp:voidMainWindow::replyFini(QNetworkReply*reply){QStringanswer=QString::fromUtf8(reply->readAll());qDebug()"get(request);}主窗口.h:#i

Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)

目录今天开始进入Redis系列学习分享1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启1.4.Redis桌面客户端1.4.1.Redis命令行客户端1.4.2.图形化桌面客户端1.4.3.安装1.4.4.建立连接2.Redis常见命令2.1.Redis通用命令2.2.String类型2.2.1.String的常见命令2.2.2.Ke

c++ - 是否可以用 lambda 初始化变量(当复制 ctor 被删除时)?

我有以下代码:structA{//现场观看:http://coliru.stacked-crooked.com/a/a5c5912bd79053c3编译时出现如下错误:g++-std=c++17-O2-Wall-pedantic-pthreadmain.cpp&&./a.outmain.cpp:Inlambdafunction:main.cpp:12:12:error:useofdeletedfunction'A::A(constA&)'returnres;^~~main.cpp:4:3:note:declaredhereA(constA&)=delete;^我知道我可以将其包装在另一

c++ - 如果析构函数有副作用并且对象是从另一个静态对象的析构函数访问的,如何进行静态反初始化?

有一个简单而众所周知的模式可以避免静态初始化失败,在section10.13oftheC++FAQLite中有所描述。.在这个标准模式中,有一个权衡,要么构造的对象永远不会被破坏(如果析构函数没有重要的副作用,这不是问题),要么不能从另一个安全地访问静态对象静态对象的析构函数(参见section10.14oftheC++FAQLite)。所以我的问题是:如果静态对象的析构函数具有最终必须发生的重要副作用并且静态对象必须由另一个静态对象的析构函数访问,您如何避免静态反初始化失败?(注意:FAQ-lite提到这个问题在M.Cline和G.Lomow的C++FAQs:FrequentlyAs

c++ - 复杂层次结构中的统一初始化语法?

我正在使用GCC4.4.5。这是我的问题的重现:#includeclassTest{public:Test(inta,intb=42):m_a(a),m_b(b){}private:intm_a;intm_b;};typedefstd::vectorTestList;classTestMaster{public:TestMaster(TestListtests=TestList()):m_tests(tests){}private:TestListm_tests;};现在,这有效:intmain(){TestListtest_list={15,22,38};return0;}但这不能编

c++ - 乱序初始化成员 - 这样可以吗?

来自对thisanswer的评论:类成员按照声明的顺序进行初始化。按照这个逻辑,下面的构造函数应该调用未定义的行为:structFoo{Bara;Barb;Foo(Barc):a(b=c){}};显然,我们在a初始化之前先分配给b。分配给未初始化的对象应该是UB。代码与Bar=int一起“工作”并不奇怪,但是如果我使Bar成为带有构造函数的重类,我会看到b确实在a之前初始化。(为了更疯狂,我们甚至可以说Foo(Barc,Bard):a(b=c),b(d){},仍然没有警告。)然而GCC4.6.1并未对此发出警告。这是可接受的、定义明确的行为,还是完全错误的?