Re: C++ vs. C#
On Dec 31, 3:01 am, SG <s.gesem...@gmail.com> wrote:
On 31 Dez., 00:41, tonytech08 <tonytec...@gmail.com> wrote:
On Dec 28, 2:28 am, SG <s.gesem...@gmail.com> wrote:
I obviously don't know what you are talking about and I'm guessing
I'm not the only one. So in case you want this thread to have any
responses that are worth reading you might want to reconsider
explaining yourself (w.r.t. lightweight concept) "again" or at least
point to some resource containing the definitions you use.
At this point, after having read up on C#'s usage of the
terminology, I'll refer the reader there. While it's not
necessarily my take or whole take on the concept, it should
suffice to introduce the unitiated. Look at the C#
documentation for the definition that MS gives to 'struct',
'class' and note the use of the term 'lightweight'.
You have to do better than saying "look up the C#
documentation". I didn't find any definition of
"lightweight". But the way this word is used suggests that
Microsoft likes to call value types "lightweight":
Unlike C++, C# very definitely divides what C++ calls "class
types" into three categories: structs, which have value
semantics and a language defined copy assignment operator,
classes, which have reference semantics and do not support
assignment, and interfaces, which can only be used as a base
class for one of the other two. All three categories are easily
emulated in C++, and a typical application will use all
three---what C# calls are more often called entity types.
At one point, James Gosling had a proposal for something similar
for Java.
Of course, because C++ leaves such definition of categories up
to the user, you get far more possibilities, when you need them:
C# doesn't support things like mixins, nor POD's nor, say, an on
stack object which implements the template method pattern.
"The struct type is suitable for representing lightweight objects
such as Point, Rectangle, and Color. Although it is possible to
represent a point as a class, a struct is more efficient in some
scenarios. For example, if you declare an array of 1000 Point
objects, you will allocate additional memory for referencing each
object. In this case, the struct is less expensive."
"In C#, a struct is like a lightweight class; it is a stack-
allocated type that can implement interfaces but does not support
inheritance."
In case you havn't noticed in C++ neither structs nor classes
define types that behave like references and thus would
qualify as being lightweight.
More or less. The categorical distinctions of C# don't really
apply to C++, since in C++, the programmer can more or less do
whatever he wants.
Also, then do a search within that documentation for
facilities that give the developer strict control over the
layout of fields within structs/lightweight classes.
Can you provide more specific pointers? BTW: What do you care
about the layout of fields? C# (at first glance) doesn't
support accessing the raw data of objects. So there's no way
to tell how the fields are laid out in memory, is there?
No. The layout of fields is totally irrelevant. This is just
the usual troll.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34