草庐IT

CONSTRUCTOR

全部标签

c++ - 为什么用()声明对象时不调用构造函数?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyisitanerrortouseanemptysetofbracketstocallaconstructorwithnoarguments?$catcons.cpp#includeclassMatrix{private:intm_count;public:Matrix(){m_count=1;std::cout语法Matrixm1();有什么作用?我认为它与Matrixm1;相同。显然我错了。

c++ - 删除复制构造函数会破坏继承的构造函数

我正在尝试使用C++11的构造函数继承功能。以下片段(从某处复制,我不记得从哪里复制了)完全可以正常工作:#includestructBase{Base():Base(0){}Base(inta):Base(a,0){}Base(inta,doubleb){std::cout也就是直到添加了注释标记的行;因为那时一切都乱套了:>g++-std=c++11-otesttest.cpptest.cpp:Infunction‘intmain(int,char**)’:test.cpp:18:11:error:nomatchingfunctionforcallto‘Derived::Deriv

c++ - 不调用采用 Base& 的构造函数

我正在为bool代数编写一个简单的程序,但双重否定没有按预期工作。我有以下类(class):运营商:#ifndefOPERATOR_H#defineOPERATOR_HclassOperator{public:virtualintgetArity(void)const=0;virtualboolcalc(void)const=0;};#endif//OPERATOR_H错误:#ifndefFALSE_H#defineFALSE_H#include"operator.h"classFalse:publicOperator{public:intgetArity()const{return0

c++ - 为什么构造函数在使用 CHAR 类型的参数调用时选择类型 INT 而不是 SHORT?

可以看出,在下面的代码中,正在调用参数类型为int的构造函数。我知道int在这里没问题。但为什么不short呢?作为'A'的ASCII值给出short可以容纳的65。根据什么条件调用数据类型为int的构造函数?#includeclassRightData{intx;public:RightData(shortdata){cout 最佳答案 integralpromotion的结果对于char是int(不是short);和促销(例如char->int)有更高的rankingoverloadresolution中的其他转换(例如char

c++ - 为什么我的 C++ 子类需要显式构造函数?

我有一个声明和定义构造函数的基类,但出于某种原因,我的公共(public)派生类没有看到该构造函数,因此我必须在派生类中显式声明一个转发构造函数:classWireCount0{protected:intm;public:WireCount0(constint&rhs){m=rhs;}};classWireCount1:publicWireCount0{};classWireCount2:publicWireCount0{public:WireCount2(constint&rhs):WireCount0(rhs){}};intdummy(intargc,char*argv[]){Wi

c++ - :className() mean in a constructor for className? 是什么

我在我正在处理的代码库中看到一些代码如下:ZfooName::ZfooName(intmagoo):ZfooName(){fGoo=magoo;}我假设这是一个C++11功能,因为它在VS2012中中断,但这是什么意思? 最佳答案 这是C++11中的新特性。它称为委托(delegate)构造函数。构造函数首先调用默认构造函数(被委托(delegate)给的构造函数)。默认构造函数返回后,执行委托(delegate)构造函数的主体。参见http://www.stroustrup.com/C++11FAQ.html#delegating

c++ - 如何为成员使用非默认构造函数?

我有两个类(class)classa{public:a(inti);};classb{public:b();//Givesmeanerrorhere,becauseittriestofindconstructora::a()aaInstance;}我怎样才能得到它,以便aInstance被a(inti)实例化,而不是尝试搜索默认构造函数?基本上,我想从b的构造函数中控制a的构造函数的调用。 最佳答案 您需要在构造函数初始化列表中显式调用a(int):b():aInstance(3){}其中3是您要使用的初始值。尽管它可以是任何整数。

c++ - 在 C++ 的菱形问题中,为什么我们需要从子类调用 grand_parent 构造函数?

请阅读代码了解情况。#includeusingnamespacestd;classone{protected:intx;public:one(inta){x=a;cout如果我替换代码four(inta,intb,intc):one(a),two(a,b),three(a,c)与four(inta,intb,intc):two(a,b),three(a,c)一个错误消息,例如:在我的代码块ide中没有匹配函数调用'one::one()'。如您所见,这是一个基于菱形问题的代码。其中第一个类是祖父类。二、三类为父类,四类为子类。所以我使用了virtual关键字来避免歧义。我在这里理解的一切

c++ - 为什么在这种情况下不调用复制构造函数?

这是一小段代码:classA{public:A(intvalue):value_(value){cout我假设输出将是“常规构造函数”(对于RHS),然后是对于LHS的“复制构造函数”。所以我避免了这种风格,总是将类的变量声明为Aa(5);。但令我惊讶的是,上面的代码从未调用复制构造函数(VisualC++2008)有人知道这种行为是编译器优化的结果,还是C++的某些已记录(和可移植)功能的结果?谢谢。 最佳答案 来自另一条评论:“所以默认情况下我不应该依赖它(因为它可能取决于编译器)”不,它实际上不依赖于编译器。任何值得一试的编译

c++ - 这是 Actor 还是建筑?

看了教科书上的一些东西后,我有点困惑。关于代码:voiddoSomeWork(constWidget&w){//Funstuff.}doSomeWork(Widget(15));doSomeWork()接受一个constWidget&参数。教科书EffectiveC++III指出,这将创建一个临时Widget对象以传递给doSomeWork。它说这可以替换为:doSomeWork(static_cast(15));因为两个版本都是强制转换-第一个显然只是函数式C强制转换。不过,我原以为Widget(15)会为采用一个整数参数的小部件调用构造函数。在这种情况下会执行构造函数吗?