Question about typeof(this)

Stanislav Blinov blinov at loniir.ru
Tue Sep 7 08:34:37 PDT 2010


  07.09.2010 17:00, Jacob Carlborg пишет:
> 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?
>
>
> 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;
> }
>
I don't think it's a bug. More of it, Expressions page in the docs has 
your very same example in Typeid section.

Inside Bar.method, typeof(this) yields a type (Bar), and typeid for 
types gets you, well, typeid for types :) typeid(this), hovewer, should 
get typeinfo for most derived class, which it does.


More information about the Digitalmars-d-learn mailing list