如果初始化器列表顺序与类中的变量顺序不匹配,为什么gcc会抛出乱码?classmyClass{public:intA;intB;myClass();};myClass::myClass():B(1),A(2){}将导致:file.h:274:warning:'myClass::A'willbeinitializedafterfile.h:273:warning:'intmyClass::Bfile.cpp:581:warning:wheninitializedhere发出这种警告有什么具体原因吗?以不同于类中定义的顺序初始化类的变量是否有任何风险?(请注意,有aquestion涉及主题
如果初始化器列表顺序与类中的变量顺序不匹配,为什么gcc会抛出乱码?classmyClass{public:intA;intB;myClass();};myClass::myClass():B(1),A(2){}将导致:file.h:274:warning:'myClass::A'willbeinitializedafterfile.h:273:warning:'intmyClass::Bfile.cpp:581:warning:wheninitializedhere发出这种警告有什么具体原因吗?以不同于类中定义的顺序初始化类的变量是否有任何风险?(请注意,有aquestion涉及主题
据我所知,不能调用基类的构造函数。我知道的唯一方法是:MyClass::MyClass(/*args*/):Base(/*args*/){//...}但这会在开始时调用构造函数。有没有办法在构造函数的其他地方调用它?像这样的:MyClass::MyClass(/*args*/){//...instructionsBase::Base(/*args*/);//...other_instructions}据此Whataretherulesforcallingthesuperclassconstructor?问题我明白没有办法,但我读了here我猜这是可能的,但如果我尝试,我会得到:erro
据我所知,不能调用基类的构造函数。我知道的唯一方法是:MyClass::MyClass(/*args*/):Base(/*args*/){//...}但这会在开始时调用构造函数。有没有办法在构造函数的其他地方调用它?像这样的:MyClass::MyClass(/*args*/){//...instructionsBase::Base(/*args*/);//...other_instructions}据此Whataretherulesforcallingthesuperclassconstructor?问题我明白没有办法,但我读了here我猜这是可能的,但如果我尝试,我会得到:erro
classMyClass{public:~MyClass(){}MyClass():x(0),y(0){}//defaultconstructorMyClass(intX,intY):x(X),y(Y){}//user-definedconstructorMyClass(constMyClass&tempObj):x(tempObj.x),y(tempObj.y){}//copyconstructorprivate:intx;inty;};intmain(){MyClassMyObj(MyClass(1,2));//user-definedconstructorwascalled.My
classMyClass{public:~MyClass(){}MyClass():x(0),y(0){}//defaultconstructorMyClass(intX,intY):x(X),y(Y){}//user-definedconstructorMyClass(constMyClass&tempObj):x(tempObj.x),y(tempObj.y){}//copyconstructorprivate:intx;inty;};intmain(){MyClassMyObj(MyClass(1,2));//user-definedconstructorwascalled.My
我正在使用一个库,该库的类具有一个不同于其构造函数的init函数。每次我创建一个新实例时,我都需要调用,例如:MyClassa;a.init();由于init不是const,这会阻止我创建const实例(我无法编写constMyClassa)。有什么方法可以调用init然后从“hereonout”声明(我猜对于范围的其余部分)我的变量是const?这可行,但依赖于不触及原始变量:MyClassdont_touch;dont_touch.init();constMyClass&a=dont_touch; 最佳答案 如果你使用C++11
我正在使用一个库,该库的类具有一个不同于其构造函数的init函数。每次我创建一个新实例时,我都需要调用,例如:MyClassa;a.init();由于init不是const,这会阻止我创建const实例(我无法编写constMyClassa)。有什么方法可以调用init然后从“hereonout”声明(我猜对于范围的其余部分)我的变量是const?这可行,但依赖于不触及原始变量:MyClassdont_touch;dont_touch.init();constMyClass&a=dont_touch; 最佳答案 如果你使用C++11
我有以下代码://MyClass.hclassMyClass{public:typedefstd::mapOpMap;staticOpMapopMap_;//(moremethods)};//MyClass.cpp//InitopMap_MyClass::opMap_["x"]=1;//compilationerror如何(静态)初始化opMap_? 最佳答案 如果你使用C++11,你可以使用初始化列表://MyClass.hclassMyClass{public:typedefstd::mapOpMap;staticOpMapop
我有以下代码://MyClass.hclassMyClass{public:typedefstd::mapOpMap;staticOpMapopMap_;//(moremethods)};//MyClass.cpp//InitopMap_MyClass::opMap_["x"]=1;//compilationerror如何(静态)初始化opMap_? 最佳答案 如果你使用C++11,你可以使用初始化列表://MyClass.hclassMyClass{public:typedefstd::mapOpMap;staticOpMapop