草庐IT

delegating-constructor

全部标签

guava - 在 Kotlin 中,如何委托(delegate)给一个接口(interface)并只提供一个无参数的公共(public)构造函数?

问题源于Kotlinclassdelegation只允许委托(delegate)给构造函数参数,因此似乎迫使您为构造函数提供参数。下面是我关于这个问题的具体用例的原始问题。我想做以下事情:valmyTable1:MyTable=MyTable()在哪里MyTable继承自ImmutableTable(src)或至少Table而且我不必手动将所有Table方法委托(delegate)给某个基本实现。我还想避免以下情况:valmyTable2:MyTable=MyTable.build()即我不想被迫使用伴随对象/静态工厂方法。我试图扩展ImmutableTable,但我得到这个类型有一个

guava - 在 Kotlin 中,如何委托(delegate)给一个接口(interface)并只提供一个无参数的公共(public)构造函数?

问题源于Kotlinclassdelegation只允许委托(delegate)给构造函数参数,因此似乎迫使您为构造函数提供参数。下面是我关于这个问题的具体用例的原始问题。我想做以下事情:valmyTable1:MyTable=MyTable()在哪里MyTable继承自ImmutableTable(src)或至少Table而且我不必手动将所有Table方法委托(delegate)给某个基本实现。我还想避免以下情况:valmyTable2:MyTable=MyTable.build()即我不想被迫使用伴随对象/静态工厂方法。我试图扩展ImmutableTable,但我得到这个类型有一个

c++ - 使用虚拟继承和委托(delegate)构造函数在构造函数中崩溃

structD{virtualvoidm()const=0;};structD1:publicvirtualD{};structD2:publicvirtualD{};structB:publicD2{B(){}B(intval):B(){}voidm()const{}};structA:publicB,publicD1{A():B(0){}};intmain(){Aa;return0;}我在使用上述代码的MSVC2013编译器中崩溃了。当使用GCC4.7.2编译时,它运行时不会崩溃。类的层次结构如下所示。D/\D1D2||\B\/A这是MS编译器中的错误还是我在代码中犯了错误?

constructor - 如何在 Kotlin 的构造函数 block 之外访问辅助构造函数参数

我是Kotlin的新手,正在学习可用的教程。但是现在我似乎对辅助构造函数有疑问:在主构造函数中声明的参数可以在函数中访问,但是当我尝试使用辅助构造函数中的参数执行此操作时,出现错误:未解析的引用:nbr代码:classTest(_name:String){valname:String=_nameconstructor(_name:String,_nbr:Int):this(_name){valnbr:Int=_nbr}funprintNameAndNumber(){println("Name:$name")println("Number:$nbr")}}我很清楚我做错了什么,但谁能告诉

constructor - 如何在 Kotlin 的构造函数 block 之外访问辅助构造函数参数

我是Kotlin的新手,正在学习可用的教程。但是现在我似乎对辅助构造函数有疑问:在主构造函数中声明的参数可以在函数中访问,但是当我尝试使用辅助构造函数中的参数执行此操作时,出现错误:未解析的引用:nbr代码:classTest(_name:String){valname:String=_nameconstructor(_name:String,_nbr:Int):this(_name){valnbr:Int=_nbr}funprintNameAndNumber(){println("Name:$name")println("Number:$nbr")}}我很清楚我做错了什么,但谁能告诉

C++为什么vector初始化会调用copy constructor

当你用下面的方式初始化一个vector时:std::vectorMyVec(10);它调用默认构造函数一次,然后再调用复制构造函数10次。所以,如果我没理解错的话,vector中的对象都是拷贝构造函数生成的。有人可以解释调用复制构造函数而不是默认构造函数的原因吗?或者甚至只是在没有对象的情况下分配内存? 最佳答案 它将分配没有对象的内存,除非您指定初始大小为10,因此它必须创建10个对象。如果你想要存储10个对象而不实际创建它们,你可以这样做:std::vectorMyVec;MyVec.reserve(10);如果你看一下你正在使

与 Kotlin、BaseObservable 和自定义委托(delegate)的 Android 数据绑定(bind)

我正在尝试编写一个自定义委托(delegate)来清理Kotlin类中数据绑定(bind)的语法。这将消除为我可能想要观察的每个属性定义自定义getter和setter的需要。Kotlin中的标准实现如下所示:classFoo:BaseObservable(){varbar:String@Bindableget()=barset(value){bar=valuenotifyPropertyChanged(BR.bar)}}很明显,这个类有很多属性,可能会变得非常冗长。我想要的是把它抽象成这样的委托(delegate):classBaseObservableDelegate(valid:

与 Kotlin、BaseObservable 和自定义委托(delegate)的 Android 数据绑定(bind)

我正在尝试编写一个自定义委托(delegate)来清理Kotlin类中数据绑定(bind)的语法。这将消除为我可能想要观察的每个属性定义自定义getter和setter的需要。Kotlin中的标准实现如下所示:classFoo:BaseObservable(){varbar:String@Bindableget()=barset(value){bar=valuenotifyPropertyChanged(BR.bar)}}很明显,这个类有很多属性,可能会变得非常冗长。我想要的是把它抽象成这样的委托(delegate):classBaseObservableDelegate(valid:

c++ - C++ 是否为纯虚拟类创建默认值 "Constructor/Destructor/Copy Constructor/Copy assignment operator"?

C++编译器是否为这个“类”生成默认函数,如Constructor/Destructor/Copy-Constructor...?classIMyInterface{virtualvoidMyInterfaceFunction()=0;}我的意思是不可能实例化这个“类”,所以我认为没有生成默认函数。否则,人们会说您必须使用虚拟析构函数。这意味着如果我不定义析构函数virtual它将默认创建,而不是virtual。此外,我想知道为纯虚拟接口(interface)定义虚拟析构函数是否合理,如上所示?(所以这里没有使用指针或数据,所以不需要破坏任何东西)谢谢。 最

c++ - 复制省略 : move constructor not called when using ternary expression in return statement?

考虑以下示例:#includeclassobject{public:object(){printf("constructor\n");}object(constobject&){printf("copyconstructor\n");}object(object&&){printf("moveconstructor\n");}};staticobjectcreate_object(){objecta;objectb;volatileinti=1;//With#if0,object'scopyconstructoriscalled;otherwise,itsmoveconstructor