Class 重写D中的非函数类成员

Class 重写D中的非函数类成员,class,inheritance,d,Class,Inheritance,D,在DLang中,有没有一种方法可以重写不是派生类中函数的类字段?或者类vtables只包含函数指针吗 例如,我希望下面打印“bar”,但它打印“foo” 只有函数可以是虚拟的。vtable提供了一种查找函数的正确重写的方法,但是可以直接访问变量,而无需任何间接操作,就像使用虚拟表时一样 如果要执行类似于重写成员变量的操作,那么最接近的是属性函数。e、 g class Foo { @property string s() { return _s; } private string

在DLang中,有没有一种方法可以重写不是派生类中函数的类字段?或者类vtables只包含函数指针吗

例如,我希望下面打印“bar”,但它打印“foo”


只有函数可以是虚拟的。vtable提供了一种查找函数的正确重写的方法,但是可以直接访问变量,而无需任何间接操作,就像使用虚拟表时一样

如果要执行类似于重写成员变量的操作,那么最接近的是属性函数。e、 g

class Foo
{
    @property string s() { return _s; }

    private string _s = "foo";
}

class Bar : Foo
{
    override @property string s() { return _s; }

    private string _s = "bar";
}

void main()
{
    import std.stdio;

    Foo bar = new Bar;
    writeln(bar.s);
}

只有函数可以是虚拟的。vtable提供了一种查找函数的正确重写的方法,但是可以直接访问变量,而无需任何间接操作,就像使用虚拟表时一样

如果要执行类似于重写成员变量的操作,那么最接近的是属性函数。e、 g

class Foo
{
    @property string s() { return _s; }

    private string _s = "foo";
}

class Bar : Foo
{
    override @property string s() { return _s; }

    private string _s = "bar";
}

void main()
{
    import std.stdio;

    Foo bar = new Bar;
    writeln(bar.s);
}

我相信最接近这个的是属性,但它们当然是函数。没有办法重写字段,如果你考虑数据是如何实际存储的,这也没有多大意义。我相信最接近这一点的是属性,但它们当然是函数。没有办法重写字段,如果您考虑数据的实际存储方式,则没有多大意义。