> Firstly, are all calls virtual in a struct/class in D?

In D structs are always value types without a vtable or inheritance.

Classes are always reference types with a vtable, but some of the methods may be final and hence not in vtable.

> Second, could you give me some case examples where this problem occurs? Is the issue if I override refresh in a derived class, and the base class will accidentally use child.refresh()?

Yes. It'll call the entry in the vtable, not the one declared in the class if its overridden.

> Third, is there the expectation that you should _never_ call any internal, private, methods inside a constructor? Or do I just call/structure it a different way?

No. Do what you need to do. Dscanner is a linter that may be a bit sensitive just in case you didn't realize that the behavior is doing something that you probably haven't considered, which could be problematic.

Reply via email to