Weird behavior of "this" in a subclass, I think?

seashell86 via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jul 15 17:18:30 PDT 2015


So I've been mostly just toying around with D as it seems like it 
will end up being a strong language for game development both now 
and even moreso in the future.  That being said, I'm perplexed by 
using this code and not receiving the result I would imagine. 
Here is the source code of a basic "sandbox.d" file:

     import std.stdio;

     class Animal {
         string voice;

         void speak() {
             writeln(this.voice);
         }
     }

     class Dog : Animal {
         string voice = "Whoof!";
     }

     int main() {
         auto a = new Animal();
         auto d = new Dog();

         a.speak(); // Prints ""
         d.speak(); // Prints "" instead of "Whoof!"

         return 0;
     }

I know that C++ behaves this way.  However, Dlang impresses me by 
having a very "no duh" approach to things where this type of 
example seems very "no duh."  Anyways, please be gentle as I am 
hardly what most would consider a "skilled" programmer and, as 
such, was something I wanted to bounce off the pros :)


More information about the Digitalmars-d-learn mailing list