Shadowing member in inheritance hierarchy - why

user1234 user1234 at 12.de
Sat Aug 9 06:09:55 UTC 2025


On Saturday, 9 August 2025 at 04:02:03 UTC, Brother Bill wrote:
> I understand that members of various levels can be 
> distinguished.
> What I don't understand is why one would use this technique.

I skipped that part of the question because I thought that the 
fact that it's not a shadowing case invalidates it.

To be frank the only time I've ever used that was with OOP and 
when a derived class introduced a derived instance of another 
class type:

```d
class Declaration {}
class StructDeclaration : Declaration {}

class TypeDeclaration {
     Declaration d;
     this(Declaration d){
         this.d = d;
     }
}

class TypeStruct : TypeDeclaration {
     StructDeclaration d;
     this(StructDeclaration d){
         this.d = d;
         super(d);
     }
}
```

So that whenever you work with a TypeDeclared or one of his 
derived class, you known that `d` is of the corresponding Type 
with a corresponding level of derivation.

Obviously in this case a system of overlapped field would have 
made more sense but that does not exist in D (never seen that 
elsewhere either btw).


More information about the Digitalmars-d-learn mailing list