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