草庐IT

inherited-constructors

全部标签

inheritance - Golang 方法覆盖

我有以下内容:typeBasestruct{}func(base*Base)Get()string{return"base"}func(base*Base)GetName()string{returnbase.Get()}我想用Get()的新实现定义一个新类型,这样我就可以使用新类型代替Base并且在调用GetName()的地方调用新的Get()执行。如果我使用Java,我会继承Base并覆盖Get()。我应该如何在Go中实现这一点?我想尽可能避免破坏性更改,因此不需要更改Base的现有使用者。我第一次尝试这个看起来像..typeSubstruct{Base}func(sub*Sub)

inheritance - golang 的继承方式,解决方法

我知道golang不支持继承,但是在goforthefollowing中正确的做法是什么?typeCommonStructstruct{IDstring}typeStructAstruct{CommonStructFieldAstring}typeStructBstruct{CommonStructFieldBstring}func(s*CommonStruct)enrich(){s.ID=IDGenerator()}如果具有以下功能,我如何重用代码以丰富所有其他“子结构”?funcdoSomthing(s*CommoStruct){s.enrich()}

inheritance - Go 中创建复杂结构层次结构的惯用方法是什么?

我正在用Go编写一个解释器,我正在寻找存储AST的惯用方式。我阅读了Go编译器源代码,似乎他们使用带有空方法的接口(interface)来表示AST。例如,我们有以下层次结构,Object--Immovable----Building----Mountain--Movable----Car----Bike上面的层次结构就是这样以“空方法”的方式实现的。typeObjectinterface{object()}typeImmovableinterface{Objectimmovable()}typeBuildingstruct{...}typeMountainstruct{...}typ

types - 如果类型 T2 基于类型 T1,那么从 T1 到 T2 是否有任何类型的 "inheritance"?

如果typeT2是基于typeT1,除了共享相同的数据字段外,T1和之间有什么关系吗>T2?packagemainimport"fmt"typeT1struct{sstring}func(v*T1)F1()string{returnv.s}typeT2T1func(v*T2)F2()string{returnv.s}funcmain(){vart1=T1{"xyz"}vart2=T2{"pdq"}s0:=t2.F1()//error-expectedoks1:=((*T1)(&t2)).F1()//ok-expecteds2:=((*T2)(&t1)).F2()//ok-notexpe

go - "constructor"函数应该返回错误还是空值?

给定一个构造函数,例如funcNewSomething(name,colorstring)*Something{s:=Something{name,color}return&s}此函数是否应包括健全性检查,例如&name==nil或len(name)==0?如果这个函数应该包含完整性检查,那么构造函数应该返回什么值?nil值,还是错误(errors.New(...))?下面包含一个示例。funcNewSomething(name,colorstring)*Something{if&name==nil||len(name)==0{returnnil}if&color==nil||len(

c++ - 错误 : wrong number of arguments specified for ‘constructor’ attribute

在实际实现之前,我写了一小段原型(prototype)代码,将一个类构造函数和ctor构造函数放在同一个文件中,看ctor是否先执行,这就是我的实际实现。但是,我遇到了一个错误。这是代码:#include#include#include#includeusingnamespacestd;extern"C"voidstartMe(void)__attribute__((constructor(1)));extern"C"voidending(void)__attribute__((destructor));classTest{public:Test(){cout--Output:$g++

c++ - Windows 上的 DLL Main 对比。 __attribute__((constructor)) Linux 上的入口点

考虑代码执行文件:intmain(){printf("ExecutableMain,loadinglibrary\n");#ifdefHAVE_WINDOWSHMODULElib=LoadLibraryA("testdll.dll");#elifdefined(HAVE_LINUX)void*lib=dlopen("testdll.so",RTLD_LAZY);#endifif(lib){printf("ExecutableMain,Freeinglibrary\n");#ifdefHAVE_WINDOWSFreeLibrary(lib);#elifdefined(HAVE_LINUX

c++ - __attribute__((constructor)) 调用顺序困惑

答案here演示了__attribute__((constructor))不是在静态初始化之后调用的,而是按声明顺序调用的。那么,如果不保证在所有数据初始化时调用它,它的用途是什么?我们也可以在Foo构造函数中包含我们的((constructor))代码。我正在寻找的是一种在共享库中拥有将在初始化所有静态数据并调用静态构造函数后执行的代码的方法。我看到有人推荐__attribute__((constructor))来替代DllMain;正如我们所见,这是错误的,因为一些静态数据可能仍未初始化。当然在单个文件(编译单元)中我们可以安排静态。但是在一个典型的程序中有很多文件。有没有办法保证

php - 在类定义的 Constructor VS 中设置变量

最近我一直在想,在类定义的构造函数VS上初始化具有默认值的变量是否有区别。哪个更好,考虑到优化:classTestClass{private$test_var='DefaultValue';function__construct(){}}classTestClass2{private$test_var;function__construct(){$this->test_var='DefaultValue';}} 最佳答案 在构造函数之外初始化属性的优点是阅读您的代码的人会立即知道它的默认值。不方便的是您不能以这种方式使用所有类型的数

php - 为什么不是 "instantiate a new object inside object constructor"?

我回答了一个问题(link),我在另一个类的构造函数中使用了新对象的创建,这里是示例:classPerson{public$mother_language;function__construct(){//justtoinitialize$mother_language$this->mother_language=newLanguage('English');}我得到了用户“Matija”(hisprofile)的评论,他写道:你不应该在对象构造函数中实例化一个新对象,依赖关系应该从外部推送,所以任何使用这个类的人都知道这个类依赖什么!总的来说,我可以同意这一点,并且我理解他的观点。不过