🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1643

Re: Q: gcc 2.7.1: Aufruf einer Konstruktormethode aus einer anderen

#1643
From: Watson
Date: Fri, 16 Feb 1996 10:46
63 lines
3301 bytes
Dietmar Kuehl wrote:
> Die Andere Moeglichkeit, ist eine 'initialize()' Methode zu
> implementieren, [...]

Meine Frage war ja nicht: kann ich eine andere Methode
implementieren und diese benutzen? (natuerlich kann ich
das :-) Eine von mir erwartete Antwort waere NEIN oder
JA, UND ZWAR SO: gewesen. (Tatsaechlich habe ich uebrigens
ein private init()-Methode geschrieben.)

> Noch zwei Bemerkungen zu Deinem Beispiel:
> 
> :       C(char *string) {
>           ^^^^^^^^^^^^
> Das ist *GANZ* schlecht:

Stilistische Kritik an einem Programm ohne dessen Kenntnis
ist fast schon hellseherisch.

> 1. Pointer, auch 'char'-Pointer, haben in C++ eigentlich nichts mehr
>    verloren und man braucht sie nur SEHR selten ausserhalb von Klassen
>    zu verwenden. Insbesondere fuer einen String braucht man sich nicht
>    zu verwenden, dafuer gibt es die Standard-Klasse 'string' (bzw.
>    'basic_string<...>'). 

char* sind voellig normale und zugelassene Datentypen/Klassen.
Die Verwendung ist anwendungsspezifisch, die Behauptung, man solle
sie nicht verwenden, ist absurd. Das fuehrt nun MICH gleich zum
2. Punkt: Offenbar scheint es sich durchzusetzen, sich ueber
die Bloedheit von gezeigten Beispielen aufzuregen, als waeren
dies Programme. Eigentlich sollen sie aber nur DAS PROBLEM 
ILLUSTRIEREN.

Ich schreibe auch keine Klassen, die nur auch zwei Konstruktoren
bestehen, das waere albern. 

> 2. Es gibt eine Standard-Klasse 'string'. Damit ist der Name 'string'
>    reserviert und es ist nicht definiert, was passiert, wenn man
>    'string' trotzdem fuer etwas anderes verwendet. Also laesst man es
>    besser bleiben, auch wenn es auf den meisten Compilern kein Problem
>    damit gibt.

Und weiter:
Die Benutzung eines Klassennamens als Identifier ist solange zu-
laessig, wie ich die betreffende Klasse nicht in meiner Quelldatei
definiere, d. h. was juckt mich, ob in irgendwelchen Headerfiles
Klassen definiert werden, deren Name zufaellig mit dem ueberein-
stimmt, den ich einem Parameter einer Methode gegeben habe. 'string'
ist KEIN Schluesselwort. Ausserdem ist sehr wohl definiert,
was passiert, wenn ich einen Klassennamen als Identifier verwende.

ABER: Ich wuerde einen Parameter ohnehin kaum 'string' nennen,
da der Datentyp ja schon davor (char*) spezifiziert ist. Geeigneter
scheint mir die Darstellung seiner Funktion zu sein, wie etwa

C(char *hostName);

Erschwerend kommt hinzu, dass man in der Klassendefinition ohnehin
keine Namen braucht...
-- 
*	Greetinx from Watson (sayegh@fokus.gmd.de)
	http://www.fokus.gmd.de/ovma/employees/sayegh/entry.html
	signal(SIGSEGV,SIG_IGN);
Technical Details
Message-ID: <31246071.4F34@fokus.gmd.de>
Path: arc1-ca.pugleaf.net!stern.fokus.gmd.de!news
References: <3120B25C.2650@fokus.gmd.de> <31229576.0@news.uni-konstanz.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!stern.fokus.gmd.de!news
From: Watson <sayegh@fokus.gmd.de>
Newsgroups: de.comp.lang.c++
Subject: Re: Q: gcc 2.7.1: Aufruf einer Konstruktormethode aus einer anderen
Date: Fri, 16 Feb 1996 11:46:09 +0100
Organization: GMD FOKUS - Research Institute for Open Communication Systems
Message-ID: <31246071.4F34@fokus.gmd.de>
References: <3120B25C.2650@fokus.gmd.de> <31229576.0@news.uni-konstanz.de>
NNTP-Posting-Host: pollux.fokus.gmd.de
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-2
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 2.0 (X11; I; SunOS 5.4 sun4m)
To: dietmar.kuehl@uni-konstanz.de