Question about typeof(this)
Don
nospam at nospam.com
Tue Sep 7 08:29:16 PDT 2010
Jacob Carlborg wrote:
> I'm reading http://www.digitalmars.com/d/2.0/declaration.html#Typeof
> where it says:
>
> "typeof(this) will generate the type of what this would be in a
> non-static member function, even if not in a member function. "
>
> From that I got the impression that the code below would print the same
> result, but it doesn't. It prints:
>
> main.Bar
> main.Foo
>
> instead of:
>
> main.Foo
> main.Foo
>
> Is this a bug or have I misunderstood the docs?
typeof(this) gives the *compile-time* type of this. Inside Bar, it has
to return 'Bar'.
typeid(this) gives the *runtime* type of this. So it can work that it's
Bar is actually a Foo.
>
>
> module main;
>
> import std.stdio;
>
> class Bar
> {
> void method ()
> {
> writeln(typeid(typeof(this)));
> writeln(typeid(this));
> }
> }
>
> class Foo : Bar {}
>
> void main ()
> {
> auto foo = new Foo;
> foo.method;
> }
>
More information about the Digitalmars-d-learn
mailing list