草庐IT

初始化OpenStack

全部标签

Java 构造函数与修饰符详解:初始化对象与控制权限

Java构造函数Java构造函数是一种特殊的类方法,用于在创建对象时初始化对象的属性。它与类名相同,并且没有返回值类型。构造函数的作用:为对象的属性设置初始值执行必要的初始化操作提供创建对象的多种方式构造函数的类型:默认构造函数:无参数的构造函数,如果用户没有明确定义构造函数,则Java编译器会自动创建一个默认构造函数。带参数的构造函数:可以为构造函数添加参数,以便在创建对象时传入初始值。示例:publicclassMain{intx;//默认构造函数publicMain(){x=5;}//带参数的构造函数publicMain(inty){x=y;}publicstaticvoidmain(S

c++ - 使用函数返回初始化列表中的临时值是否合法

我有一个对象的以下构造函数Segment::Segment(QPointFconst&start,QPointFconst&end):mOrigin(toVector3df(start)),mEnd(toVector3df(end)){}mOrigin是Vector3df类型,函数toVector3df(QPointFconst&)返回一个临时的Vector3df。到目前为止,一切都很好。代码编译得很好,在linux,gcc4.4.3下工作得很好。大多数警告已激活。现在我想为诺基亚智能手机(MeamoFremantle)交叉编译相同的代码突然间我收到了非常奇怪的编译器警告:includ

c++ - 什么时候临时用作命名对象的初始值设定项被销毁?

在“TheC++ProgrammingLanguage(3rd)”p.255:Atemporarycanbeusedasaninitializerforaconstreferenceoranamedobject.Forexample:voidg(conststring&,conststring&);voidh(string&s1,string&s2){conststring&s=s1+s2;stringss=s1+s2;g(s,ss);//wecanusesandsshere}Thisisfine.Thetemporaryisdestroyedwhen"its"referenceorn

c++ - C++中原子变量的线程安全初始化

考虑以下C++11代码,其中类B被实例化并由多个线程使用。因为B修改了一个共享vector,所以我必须在B的构造函数和成员函数foo中锁定对它的访问。为了初始化成员变量id,我使用了一个计数器,它是一个原子变量,因为我从多个线程访问它。structA{A(size_tid,std::stringconst&sig):id{id},signature{sig}{}private:size_tid;std::stringsignature;};namespaceN{std::atomiccounter{0};typedefstd::vectorAs;std::vectorsharedRes

c++ - 在哪里初始化随机种子以通过多个随机模块使用?

所以,每次我开发一些大的东西,将多个模块组合在一起构建最终功能时,我一直在想同一个问题:如果超过1个模块需要使用随机函数,在哪里初始化随机种子?如果我有一个需要随机的类(例如,类通过使用self实现的快速排序对输入数组进行排序来初始化自身,所以我需要一个随机数来选择主元),我通常有一个私有(private)的staticboolisRandOn;变量,所以在我开始选择随机基准之前,我会检查该变量并执行srand(time(NULL));如果随机尚未打开。如果我在一个命名空间中有大量的实用函数,我会做一件非常相似的事情:我将这样一个变量放在我的utils库中的一个匿名命名空间中,并或多或

c++ - C++中的静态初始化和线程安全

类实例的静态初始化不是线程安全的。下面的代码是不该做什么的示例:externintcomputesomething();classcachedcomputation{public:cachedcomputation(){result=computesomething();}intresult;};voidusecached(){staticcachedcomputationc;//useofc.result-maybreak}但是,下面的代码是线程安全的吗?(忽略解决方案的丑陋之处)它何时或为何会崩溃?externintcomputesomething();classcachedcom

c++ - 类构造函数和对象实例化/初始化 C++/GCC

我在使用GCC的C++类构造函数方面遇到了麻烦。下面的“foo”类应该模拟处理器寄存器,如AL、AH、AX、EAX等,我需要一些与此类相关的基本算法。但我在初始化或“foo”对象中有一个奇怪的行为。对于以下两种情况,我没有相同的结果:foow=0x12345678;//case1foow;//case2init(2steps)w=0x12345678;对我来说,情况2有效GCC调用foo()(构造函数1),然后调用=运算符。最后,w.m_val没问题但是对于案例1,GCC直接调用foo(long*)(构造函数2),仅此而已。显然这不是我所期待的。如果“foo”是char、int或lon

c++ - 奇怪的行为,用 int 初始化函数指针?

无意中,我发现这段代码可以在VS2012上编译。typedefvoid(*func)();funcf=func(12);f被初始化为一个整数12作为它的地址。据我所知,从整数转换为函数指针是有效的,如下所示:funcf=(func)12;虽然语句func(12)看起来更像是一个构造函数,所以我尝试了这个:funcf(12);编译失败。funcf=(func)12//ok,cast1funcf=func(12);//ok,what?2funcf(12);//failed3funcf=12;//failed4所以我的问题是:func(12)的真正底层语法是什么,是强制转换还是初始化?如何使

c++ - 为什么抽象派生类需要初始化一个虚基类?

这个问题在这里已经有了答案:Inanabstractclassconstructor,whyIdoneedtocallaconstructorofavirtualbasethatwillnevertocalled?(1个回答)关闭7年前。请看下面的代码:structObject;structComponent{Component(Object*obj){}};structRenderable:publicvirtualComponent{virtualvoidRender()=0;};structAnimationRenderer:publicRenderable{AnimationR

c++ - 在聚合初始化列表中的给定位置,传递到先前位置的值是否可以安全地从相应成员读取?

这个问题在这里已经有了答案:Isitdefinedbehaviortoreferenceanearlymemberfromalatermemberexpressionduringaggregateinitialization?(4个答案)关闭7年前。struct{inta,b;}s={5,s.a+1};按照标准,在上面的例子中读取“s.a”是安全的,所以s被初始化为a=5和b=6吗?如果是这样,大多数编译器都遵守这条规则吗?(以上在VC10编译。)