Simen kjaeraas Wrote: > Jim <[email protected]> wrote: > > > > "All class-based objects are dynamically allocatedâunlike in C++, there > > is no way to allocate a class object on the stack." > > - The D Programming Language, chapter 6. > > That would probably be better written as "there is no built-in way to > allocate a class object on the stack." D is a pragmatic system programming > language. If you want to treat this blob of memory as a Foo, and you're > willing to jump through some hoops, it can be done. But the language does > not encourage this. > > Like I said, putting a class on the stack is an unsafe thing to do (see > http://en.wikipedia.org/wiki/Object_slicing), and it was deemed that the > language should not directly support such an idiom. It is still doable in > a library. > > > > The lightweight nature of structs is very appealing though. I like that > > very much of course. Couldn't that be optimised by the compiler alone > > knowing that a class wasn't derived? > > Perhaps, in some cases. Final classes might. If a class is not marked > final, someone might derive from it, include this from a DLL or otherwise, > and boom goes the program. > > -- > Simen
Okay, thanks! I learned some from this thread.
