view test/classes4.d @ 217:0806379a5eca trunk

[svn r233] Added: -oq command line option for writing fully qualified object names. Added: started support for x86 80bit floating point. Changed: aggregates passed by value now use the llvm 'byval' parameter attribute, also lays ground work for using other attributes. Changed: eliminated a lot more std::vectorS, these showed up pretty much at the top when profiling! Changed: performed other misc. cleanups. Changed: halt expression now call the new llvm trap intrinsic instead of an assert(0). Changed: dstress suite now passes -O0 by default, this only eliminates unreferenced globals, which speeds up linking quite a bit.
author lindquist
date Thu, 05 Jun 2008 06:38:36 +0200
parents c53b6e3fe49a
children d9d5d59873d8
line wrap: on
line source

class A
{
    int i = 42;
    double df = 3.1415;
    this()
    {
    }
    char[] toString()
    {
        return "A:Object";
    }
}

class B : A
{
    ubyte b;
    char[] toString()
    {
        return "B:A";
    }
}

void main()
{
    scope a = new A;
    char[] as = a.toString;
    {printf("a.toString = '%.*s'\n", as.length, as.ptr);}

    Object o = a;
    char[] os = o.toString;
    {printf("o.toString = '%.*s'\n", os.length, os.ptr);}

    scope b = new B;
    char[] bs = b.toString;
    {printf("b.toString = '%.*s'\n", bs.length, bs.ptr);}
}