这个简单的例子演示了调用基类构造函数的C++语法——据我作为C++学习者的理解:classBaseClass{protected:inti;public:BaseClass(intx){i=x;}};classDerivedClass:publicBaseClass{intj;public:DerivedClass(intx,inty):BaseClass(y){j=x;}在这里,基类构造函数可以将命名参数作为派生类构造函数的输入。现在,如果我想用一个不是直接输入到DerivedClass()的输入值调用BaseClass()构造函数怎么办?基本上,我想在DerivedClass()中
假设我有一个模板,它由一个类类型和一些参数类型参数化。一组匹配这些类型的参数存储在一个元组中。如何将这些传递给类类型的构造函数?几乎在C++11代码中:templatestructfoo{tupleargs;Tgen(){returnT(get(args),get(args),...);}};构造函数调用中的...不定长怎么填?我想我可以想出一些复杂的递归模板调用机制来执行此操作,但我不敢相信我是第一个想要这个的人,所以我想会有现成的解决方案来这在那里,甚至可能在标准库中。 最佳答案 C++17有std::make_from_tup
如果我有这样的结构:structThing{intx;inty;boola;boolb;}然后我可以创建一个Thing对象,方法是:Thingt{1,2,true,false};。但是,如果我有一个元组,那么我会做类似的事情:std::tupleinfo=std::make_tuple(1,2,true,false);Thingt{std::get(info),std::get(info)..//andsoon有更好的方法吗? 最佳答案 我们可以创建一个通用工厂函数,用于从类似元组的类型(std::tuple、std::pair、s
我知道,我可以像这样初始化数据。intarray[3]={1,2,3};甚至intarray[2][2]={{1,2},{3,4}};我也可以使用std::vectorstd::vectorA={1,2,3};假设我想编写自己的类:classmy_class{std::vectorA;public://pseudocodemy_class(*x){storexinA;}//withx={{1,2},{3,4}}//dosomething};是否可以编写这样的构造函数以及如何实现?这是什么说法{{1,2},{3,4}}实际上在做什么?我总是发现,您可以用这种方式初始化数据,但从来不知道它
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭3年前。Improvethisquestion我很想知道下面的代码是什么意思我只是想知道它是如何工作的。vectorlotteryNumVect(10);//Idonotunderstandthispart.intlotteryNumArray[5]={4,13,14,24,34};//Iunderstandthispart.lotteryNumVect.insert(lotteryNumVect.begin(),lotteryNumArra
关闭。这个问题需要更多focused.它目前不接受答案。想改善这个问题吗?更新问题,使其仅关注一个问题editingthispost.4年前关闭。Improvethisquestion在Java中,序列化对象非常容易。在C++中,只有安全(?)到memcpy对象,只要它们像C结构(没有多态)。在C++中,如果编译器能够生成默认的(平凡的)复制构造函数,那么为什么它不能生成用于自动序列化的代码?在Java中,构造函数只能访问静态函数和数据成员。在C++中,我可以愉快地使用ctor中的非静态成员和函数。在Java中,我可以在类中内联初始化数据成员。在C++中,这是一个编译错误。在Java中
偶尔,我在我的程序代码的一处打错了字:inta=10;char*b=newchar(a);错误很明显:我写的是()而不是[]。奇怪的是......代码编译正常,它在调试器中运行正常。但是在执行带有这些行的函数后,在调试器外部编译的.exe崩溃了片刻。第二行代码真的合法吗?如果是,这对编译器意味着什么? 最佳答案 这是一个数值为a的单个字符,在本例中为10。您知道,指针不仅仅指向数组。 关于c++-我真的可以用圆括号初始化数组吗?,我们在StackOverflow上找到一个类似的问题:
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whatisthisweirdcolon-membersyntaxintheconstructor?我在Qt应用程序的构造函数中随处可见,但我不知道它叫什么。我正在尝试查找有关它的文档。Browser::Browser(QTextBrowser&textBrowser,QObject*parent/*=0*/)://我为我的新手道歉。
这与"WhenVTABLEiscreated?"无关.相反,应该在什么时候初始化VPTR?是在构造函数的开头/结尾还是在构造函数之前/之后?A::A():i(0),j(0)-->>here?{-->>here?//...-->>here?} 最佳答案 虚拟调用的机制(通常是一个v表,但不需要)是在ctor-initializer期间、基础子对象构造之后和成员构造之前设置的。[class.base.init]部分法令:Memberfunctions(includingvirtualmemberfunctions,10.3)canbec
我在为类型层次结构中的构造函数调用规则时遇到了棘手的问题。这是我所做的:classA{protected:int_i;public:A(){i=0;}A(inti):_i(i){}virtual~A(){}virtualvoidprint(){std::coutprint();deletemyC;return0;}现在,我想让newC(1,2,3)调用B(1,2)的构造函数,然后B(1,2)又应该调用构造函数A(1)来存储_i=1,_j=2,_k=3。在创建类C的实例myC时,由于某种原因我不明白,但是,要调用的第一个构造函数是A的标准构造函数,即A::A();这显然会导致错误的结果,