草庐IT

super-jump

全部标签

c++ - 在 C++ 中是否有时不调用父类(super class)的构造函数?

这个问题让我参加了面试。如果B是A的子类。构造B时,有没有调用A的构造函数的时候?编辑:我告诉面试官我想不出这种情况,因为我认为只有在构造子类之前正确构造父类(superclass)才有意义。 最佳答案 一个可能的例子是同时A和B没有用户声明的构造函数和B的实例正在值初始化。A和B两者都有隐式声明的构造函数,不会在此初始化中使用。同样如果A没有用户声明的构造函数,但出现在B的构造函数的成员初始值设定项列表中但是用一个空的初始值设定项然后AB的构造函数将被值初始化用来。同样,因为A没有用户声明的构造函数值初始化不使用构造函数。

inheritance - 如何让数据类在 Kotlin 中实现接口(interface)/扩展父类(super class)属性?

我有几个数据类,其中包括varid:Int?字段。我想在interface或superclass中表达这一点,并让数据类扩展它并在构造时设置此id。但是,如果我尝试这样做:interfaceB{varid:Int?}dataclassA(varid:Int):B(id)它提示我正在覆盖id字段,我是哈哈..Q:在这种情况下,如何让数据类A在构造时获取一个id,并设置该id在interface或superclass中声明? 最佳答案 确实,您不需要abstractclass然而。您可以覆盖interface属性,例如:interfac

inheritance - 如何让数据类在 Kotlin 中实现接口(interface)/扩展父类(super class)属性?

我有几个数据类,其中包括varid:Int?字段。我想在interface或superclass中表达这一点,并让数据类扩展它并在构造时设置此id。但是,如果我尝试这样做:interfaceB{varid:Int?}dataclassA(varid:Int):B(id)它提示我正在覆盖id字段,我是哈哈..Q:在这种情况下,如何让数据类A在构造时获取一个id,并设置该id在interface或superclass中声明? 最佳答案 确实,您不需要abstractclass然而。您可以覆盖interface属性,例如:interfac

c++ - 将 std::variant 转换为另一个具有父类(super class)型集的 std::variant

我有一个std::variant,我想将其转换为另一个具有其类型超集的std::variant。有没有一种方法可以让我简单地将一个分配给另一个?templateToVariantConvertVariant(constFromVariant&from){ToVariantto=std::visit([](auto&&arg)->ToVariant{returnarg;},from);returnto;}intmain(){std::varianta;a=5;std::variantb;b=ConvertVariant(a);return0;}我希望能够简单地编写b=a来进行转换,而不是

java - 在 Kotlin 数据类中调用父类(super class)构造函数之前的访问函数

我在Kotlin中使用数据类来显着减少我必须编写的Java代码量。但是,在我的一个Java类中,我不确定如何在Kotlin中实现相同的结果。我的Java类看起来有点像这样:publicclassDataObject{privateintmId;privateStringmName;publicDataObject(intid,Stringname){mId=id;mName=name;}publicDataObject(Contextcontext,intid){mId=id;Cursorcursor=...cursor.moveToFirst();mName=cursor.getSt

java - 在 Kotlin 数据类中调用父类(super class)构造函数之前的访问函数

我在Kotlin中使用数据类来显着减少我必须编写的Java代码量。但是,在我的一个Java类中,我不确定如何在Kotlin中实现相同的结果。我的Java类看起来有点像这样:publicclassDataObject{privateintmId;privateStringmName;publicDataObject(intid,Stringname){mId=id;mName=name;}publicDataObject(Contextcontext,intid){mId=id;Cursorcursor=...cursor.moveToFirst();mName=cursor.getSt

c++ - 无论如何有一个 valgrind 消息 "Conditional jump or move depends on uninitialized value"可以是所谓的 'false positive'

我在这里找到的大多数问题都提供一段代码,并由指出实际错误的人回答。我的问题是关于一般未初始化值的条件跳转。我可以理解,如果确定此分配仅完成一次并且在程序的生命周期内可能需要,则不必在程序结束时清理一block内存。据我所知,当程序终止时,GType系统会留下大量未释放的内存。这些未释放的block可以被视为“误报”。但是“有条件的跳跃或移动未初始化的值”会是误报吗?我唯一能想出的是有人通过读取随机地址来实现(坏的)随机函数(其中随机地址本身是棘手的部分;)。另一个例子可能是硬件映射到内存的一部分然后被读取,但这主要是由驱动程序而不是由普通用户应用程序完成的。是否有任何其他示例(最好是C

c++ - 重载父类(super class)的函数

C++标准中有什么东西阻止我重载父类(superclass)的函数吗?从这对类开始:classA{//superclassintx;public:voidfoo(inty){x=y;}//originaldefinition};classB:publicA{//derivedclassintx2;public:voidfoo(inty,intz){x2=y+z;}//overloaded};我可以轻松调用B::foo():Bb;b.foo(1,2);//[1]但是如果我尝试调用A::foo()...Bb;b.foo(12);//[2]...我收到一个编译器错误:test.cpp:Inf

c++ - 如何处理 "super"调用和递归

我的问题是关于合并2种技术:递归调用super函数递归调用同一个函数假设一个根类有一个递归函数(foo),一个扩展类重写这个函数(foo):重写函数必须调用super::foo,但需要在递归调用之前执行其他操作。我会尝试一个例子(这只是一个例子,我知道有非递归的方法可以解决这个问题)classNode{public://mustbeoverridevirtualintgetNumValues(){if(parent)returnparent->getNumValues()+3;elsereturn3;}protected:Node*parent;private:intvalues[3]

AndroidX Room 未解析的父类(super class)型 RoomDatabase

当我尝试构建我的应用时,我收到了这个编译错误:Supertypesofthefollowingclassescannotberesolved.Pleasemakesureyouhavetherequireddependenciesintheclasspath:com.example.persistence.AppDatabase,unresolvedsupertypes:androidx.room.RoomDatabase持久性设置在单独的Android模块(持久性)中。build.gradle//KotlinStdLibimplementation"org.jetbrains.kot