> You are not forced to define the private data
members and functions at
the
> same time as the public ones in C++. The way to
handle this is to put
the public
interface in a
pure virtual class:
In my opinion (please note that this IS an opinion) the method you propose
is at least as ugly as any other way of keeping a class's private data
members
private. IMO, using C and doing
I don't see what makes the method I propose, and that most C++ programmers
use, ugly. It is much cleaner and explicit that your method below.
typedef void Object ;
Object * Object_new (/* parameters */) ;
You cannot create an Object on the stack. With C++ classes you can. This
makes resource management much easier.
int method_1 (Object *object, /* parameters */) ;
This is not type safe. I suppose this function method_1 then calls another
function
via a pointer stored somewhere in *object?
void Object_delete (void) ;
void Object_delete(Objects *object); ?
and then using a struct (return a pointer to it from
Object_new()) in the
implementation file is neater and works better.
I think it is less flexible, less readable and error prone.
If you think C++ is great, then you are entitled to
your opinion. In my
experience, the C++ boosters are far pushier with their form of religion
than the people who prefer C to C++.
Hmm. I tend to think it's the other way round. (the standard "C++ is slow",
"C++ isn't really OO", etc. arguments are quite often seen.)
I think most
of the arguments in the article are not valid,
Most of the arguments or just the ones relating to C++? I did talk about
stuff other than C++ in that article.
I meant only the ones related to C++.
[...]
2) OO can be done in Standard C.
Sure. But the language does not support it, it merely enables its use.
3) Some people (me included) might prefer doing OO
programing in C
rather than C++.
It is not up to me to tell you what language to use. As you in your article
talked
how you think C is a better language, I gave my point of view.
--ms