Dive Into Java?
Bjoern Schliessmann
usenet-mail-0306.20.chr0n0ss at spamgourmet.com
Wed Oct 11 11:43:54 EDT 2006
Diez B. Roggisch wrote:
> Yes. You can for example create a constructor for object Foo,
> which then is implicitly chosen when assigning an int to a
> variable of that kind. So it acts as a casting operator. I call
> that wicked, and subtle.
>
> class Foo {
> int _arg;
> public:
> Foo(int arg) {
> _arg = arg;
> }
> };
>
> int main() {
> Foo f = 10;
> }
Just looks like Java's
String spam = "eggs";
> Who cares for the reason - it is there, isn't it? You are the one
> claiming that a new language should get rid of old concepts, btw.
Is C++ new? :) IIRC it's well 10 years older than Java, and that's
quite a lot in IT. Apart from this, Java is constantly evolving
(through Sun), where C++ is quite a standard since <= 1998.
> Where is your money, and where your mouth?
I'm not discussing for money ;)
> That is a matter of taste - but in the same way, we could argue
> about C++ and C, can't we?
ACK.
>> That's not exactly my point. What if I just wanted to build my
>> own interface compatible class ... impossible.
> I don't understand that.
If I'd like to write a class that is interface compatible to Java's
String, so e.g. that I can use it with "+" operator or the
simplified construction (String a = "b";).
> So what? Since when is compiler optimization a bad thing?
I don't offense compiler optimization, but the clunkiness of
those "special rules for String only" additions.
> What do you think happens all the time when mixing types in C++?
Mh, surely no convenience substitution in the sources for one class
only.
> And I know of some very elaborated schemes called "common base
> class idiom" for e.g. template-based vector classes to introduce
> allocation optimization to arithmetic expressions in C++.
I don't ;) Too high for me.
> The code _generated_ by the java compiler, and the C++ compiler,
> is not the issue here.
Full ACK. (perhaps we were misunderstanding each other)
> and in C++, you can do:
>
> char *a = "1";
> char *b = "2";
> char *c = a + b;
>
> But with a totally different, unexpected outcome.. I know where
> *I* start laughing here.
Mh, in other languages you also *can* do stupid things. I'm thinking
about weird Python class designs. But Python's lack of private
variables isn't bad just because of this, is it?
> The way is not awkward, it is called auto-boxing/unboxing and
> works very well.
But it looks weird. Why not use classes for basic types? Is
performance really the reason? It kind of splits the language
style.
> And this is more than matched by the subtle differences between
>
> Foo a;
> Foo &a;
> Foo *a;
I don't think that's too subtle. But, perhaps, just because I'm used
to C++. It has a little bit too many compatibility features.
But I'd rather like to have several options than being forced in one
way.
Regards,
Björn
--
BOFH excuse #449:
greenpeace free'd the mallocs
More information about the Python-list
mailing list