 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
server Guest
|
Posted: Thu Jan 26, 2006 7:02 pm Post subject: Array |
|
|
message unavailable |
|
| Back to top |
|
 |
Falk Tannhäuser Guest
|
Posted: Thu Jan 26, 2006 7:02 pm Post subject: Re: Array |
|
|
Frank Mockenhaupt wrote:
| Quote: | Wie kann ich alle Elemente eines Arrays direkt bei der Deklaration mit
einem (Start-)Wert definieren?
|
Meinst sicher "initialisieren".
int const arr[] = { 32, 16, 8 };
MfG
Falk
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Frank Mockenhaupt Guest
|
Posted: Thu Jan 26, 2006 8:37 pm Post subject: Re: Array |
|
|
Hallo;
Ich meine, wie ich alle Elemente eines Arrays beim Start mit einem Wert
initialisieren kann ohne explizit jeden Wert einzeln angeben zu müsse.
z.B. int array[] = {0,0,0,0}
MfG
Falk Tannhäuser schrieb:
| Quote: | Frank Mockenhaupt wrote:
Wie kann ich alle Elemente eines Arrays direkt bei der Deklaration mit
einem (Start-)Wert definieren?
Meinst sicher "initialisieren".
int const arr[] = { 32, 16, 8 };
MfG
Falk
|
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Christian Sulzer Guest
|
Posted: Thu Jan 26, 2006 10:14 pm Post subject: Re: templates und friend-Funktionen |
|
|
Marcel Müller wrote:
| Quote: | template <size_t t
struct foo
{
friend foo<t>& operator << (foo<t> &f, int i);
};
|
IMO ist der Operator << doch vergleichbar mit ein Funktionstemplate, daß
seinen eigenen Templateparameter benötigt ?
| Quote: | template <size_t t
foo<t>& operator << (foo<t> &f, int i) { return f; }
?
|
Das gibt zumindest bei VC++7.1 einen Linkerfehler (Definition von
operator << nicht gefunden). Also Deklaration != Definition.
| Quote: |
Das andere definiert ja für jede Variante von foo nochmal einen Operator
, den es für jeden Integer u gibt. Kurzum es dürfte nicht nur der
eigene << Operator als friend drauf, sondern auch jeder andere.
|
Also da habe ich was grundsätzlich falsch verstanden. Ich dachte, der
operator << ist in diesem Fall wie eine freie Funktion zu behandeln, zu
der sich die Klasse foo als friend verhält.
| Quote: | Gleichwohl spricht aus meiner Sicht nichts dagegen, dass jeder Operator
(foo<u>&,int) zu jedem foo<t> friend ist. (Beachte u != t)
|
Davon ging ich eigentlich aus.
| Quote: | Vielleicht hilft ihm ein
struct foo;
template <size_t u
foo<u>& operator << (foo<u> &f, int i);
vor der Klassendefinition auf die Sprünge.
|
Hat leider nix bewirkt. Dieselbe Fehlermeldung. Die Korrektur deines
nachfolgenden Postings habe ich berücksichtigt.
ich vermute auch, daß es sich um einen Compilerbug handelt. Der g++
hat's ja ohne zu meckern gefressen ;-)
Besten Dank nochmal,
Chris
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Thu Jan 26, 2006 10:22 pm Post subject: Re: function template nur in header-d atei möglich? |
|
|
Dietmar Kuehl wrote:
| Quote: | Rolf Magnus wrote:
Ich hatte angenommen, daß es gerade um die organisatorische Sicht geht.
Die Implementationen stehen physikalisch nicht in der Header-Datei,
sondern wie von den anderen Klassen gewohnt in einer
extra-Implementationsdatei. Wie das aus Compiler-Sicht aussieht, ist dabei
doch eigentlich egal, oder?
Das sehe ich anders! Wenn man z.B. mit Optimierung compiliert, dann
kann es ganz schnell zu langen Compilierzeiten kommen, wennn man
komplexe Template-Systeme in Headern implementiert.
|
Dafür ist es aber irrelevant, ob der viele Extra-Code im Header oder in
einer physikalisch anderen Datei steht. Wenn der Code da ist, kostet er
Compilezeit. Und wenn der Entwickler sein Handwerk versteht, ist der
Code nur dann da, wenn es wirklich unbedingt notwendig ist. Und wenn
also die Notwendigkeit besteht, viel Template-Code in einem Header
unterzubringen, ist die Trennung in ".h" und inkludierte ".cc" durchaus
nicht unpraktisch. Da kann man z.B. die "zeige-mir-die-Definition-
dieser-Funktion"-Funktion seines Editors benutzen.
Dass es damit leicht ist, Bloat und ewig lange brauchende Compilerläufe
zu fabrizieren, ist natürlich klar. Aber dass es in C++ besonders
einfach ist, durch Nachlässigkeit Bloat zu erzeugen, ist glaube ich
nichts neues.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Thu Jan 26, 2006 10:23 pm Post subject: Re: std::cout << NULL |
|
|
Bob Hairgrove <invalid (AT) bigfoot (DOT) com> writes:
| Quote: | Irgendwo hatte ich gelesen oder gehört, dass NULL-Zeiger auf manche
Betriebssysteme (IBM OS/400, vielleicht?) intern nicht mit dem Wert
0 darstellen...weiss jemand hier evtl. Näheres?
|
Es ist nicht nur eine Frage des Betriebssystems, sondern der
Implementation der Programmiersprache. Ich erinnere mich an einen
Modula-2-Compiler für DOS, dessen NULL-Zeiger auf eine bestimmte
reservierte Speicherstelle zeigte. Wenn der Wert des Werts an dieser
Stelle während der Ausführung des Programms verändert wurde,
dereferenzierte das Programm mit sehr guter Wahrscheinlichkeit einen
NULL-Zeiger.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Thu Jan 26, 2006 10:26 pm Post subject: Re: templates und friend-Funktionen |
|
|
Marcel Müller <news.5.maazl (AT) spamgourmet (DOT) com> writes:
| Quote: | Hallo!
Warum nicht so:
template <size_t t
struct foo
{
friend foo<t>& operator << (foo<t> &f, int i);
|
Das deklariert eine gewöhnliche Funktion (kein Template).
| Quote: | };
template <size_t t
foo<t>& operator << (foo<t> &f, int i) { return f; }
|
Das definiert ein Template.
| Quote: | Das andere definiert ja für jede Variante von foo nochmal einen
Operator <<, den es für jeden Integer u gibt. Kurzum es dürfte nicht
nur der eigene << Operator als friend drauf, sondern auch jeder andere.
Gleichwohl spricht aus meiner Sicht nichts dagegen, dass jeder
Operator <<(foo<u>&,int) zu jedem foo<t> friend ist. (Beachte u != t)
Ich vermute, MSVC hat es mal wieder versiebt. (Sorry, hatte mit MSVC
7.0 und 7.1 mit C++ auch schon mächtig "Spaß".)
Vielleicht hilft ihm ein
struct foo;
template <size_t u
foo<u>& operator << (foo<u> &f, int i);
vor der Klassendefinition auf die Sprünge.
|
.... und die friend-Deklaration muss dann
friend foo<t>& operator << <>(foo<t> &f, int i);
lauten, damit sie sich auf eine Spezialisierung des Templates bezieht.
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Stefan Reuther Guest
|
Posted: Thu Jan 26, 2006 10:27 pm Post subject: Re: std::cout << NULL |
|
|
Bob Hairgrove wrote:
| Quote: | Irgendwo hatte ich gelesen oder gehört, dass NULL-Zeiger auf manche
Betriebssysteme (IBM OS/400, vielleicht?) intern nicht mit dem Wert 0
darstellen...weiss jemand hier evtl. Näheres?
|
Auch auf solchen Maschinen ist '0' ein Nullpointer und 'cout << NULL'
muss die Ausgabe "0" ergeben.
Den Zeiger mit der Repräsentation 0 würdest du auf so einer Maschine
z.B. mit 'int i = 0; char* p = (char*) i' erhalten.
Stefan
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Marcel Müller Guest
|
Posted: Fri Jan 27, 2006 2:21 am Post subject: Re: templates und friend-Funktionen |
|
|
Thomas Maeder wrote:
| Quote: | Marcel Müller <news.5.maazl (AT) spamgourmet (DOT) com> writes:
friend foo<t>& operator << (foo<t> &f, int i);
Das deklariert eine gewöhnliche Funktion (kein Template).
|
Ja, stimmt, nächster Fehler.
Muss heissen:
friend foo<t>& operator << <>(foo<t> &f, int i);
(Wenn man einmal etwas nicht gleich ausprobieren kann.)
Das habe ich aber jetzt getestet!
Marcel
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Dietmar Kuehl Guest
|
Posted: Fri Jan 27, 2006 6:16 am Post subject: Re: Array |
|
|
Frank Mockenhaupt wrote:
| Quote: | Ich meine, wie ich alle Elemente eines Arrays beim Start mit einem Wert
initialisieren kann ohne explizit jeden Wert einzeln angeben zu müsse.
z.B. int array[] = {0,0,0,0}
|
Für Arrays, die mit Null initialisiert werden sollen ist das einfach:
int array[10] = {};
Für den Fall, dass man einen anderen Wert haben möchte, muß man
allerdings die Notation etwas ändern:
std::vector<int> array(10, 17);
--
<mailto:dietmar_kuehl (AT) yahoo (DOT) com> <http://www.dietmar-kuehl.de/>
<http://www.eai-systems.com> - Efficient Artificial Intelligence
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
kanze Guest
|
Posted: Fri Jan 27, 2006 8:01 pm Post subject: Re: function template nur in header-datei möglich? |
|
|
Stefan Reuther wrote:
| Quote: | Dietmar Kuehl wrote:
Rolf Magnus wrote:
Ich hatte angenommen, daß es gerade um die organisatorische
Sicht geht. Die Implementationen stehen physikalisch nicht
in der Header-Datei, sondern wie von den anderen Klassen
gewohnt in einer extra-Implementationsdatei. Wie das aus
Compiler-Sicht aussieht, ist dabei doch eigentlich egal,
oder?
Das sehe ich anders! Wenn man z.B. mit Optimierung
compiliert, dann kann es ganz schnell zu langen
Compilierzeiten kommen, wennn man komplexe Template-Systeme
in Headern implementiert.
Dafür ist es aber irrelevant, ob der viele Extra-Code im
Header oder in einer physikalisch anderen Datei steht. Wenn
der Code da ist, kostet er Compilezeit.
|
Das stimmt nur teilweise. Wenn ich eine Klasse C mit den
Funktionnen f(), g() und h() definiere, liest der Compiler bei
der Compilierung von Client-Code lediglich nur die
Klassen-Definition, nicht aber die Definitionen der Funktionnen.
Auch dann, wenn ich die Funktion aufrufe. Ist aber C ein
Template, dann liest der Compler die ganzen
Funktiondefinitionnen bei jeder Compilierung von Client-Code.
Und häufig, wenn ich die Funktion f() aufrufe, wird sie auch
vollig kompliliert -- wenn ich sie in zwanzig unterschiedenen
Moduln benutze, dann wird bei einem kompletten Build derselbe
Code zwanzigmal compiliert, statt nur einmal.
| Quote: | Und wenn der Entwickler sein Handwerk versteht, ist der Code
nur dann da, wenn es wirklich unbedingt notwendig ist.
|
Die meisten Compiler sagen, dass die vollständige Definition der
Funktion notwendig ist, sofort die Funktion einen Template ist,
und benutzt wird. Bei nicht Templates kann ich die Funktion
benutzen, ohne dass der Compiler seine Implementierung sieht.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Peter Maas Guest
|
Posted: Thu Mar 02, 2006 3:50 am Post subject: Re: C/C++ Buch für 12jährigen: Empfehl ung? |
|
|
Sascha T. schrieb:
| Quote: | Allerdings habt ihr recht, eine alternative Sprache wäre durchaus sinnvoll.
Doch Python ist mir zu weit weg von der C-Syntax, ich denke, ich werde mir
nochmal über Perl gedanken machen!
|
Das ist noch weiter weg von der C-Syntax oder gibt es in C "unless", ~=,
$@& vor Variablen/Funktionen etc.? Abgesehen davon ist die syntaktische
Ähnlichkeit ziemlich unwichtig.
Peter Maas, Aachen
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Richard Guest
|
Posted: Thu Mar 02, 2006 10:06 am Post subject: Re: C/C++ Buch für 12jährigen: Empfehl ung? |
|
|
Peter Maas wrote:
| Quote: | Sascha T. schrieb:
Allerdings habt ihr recht, eine alternative Sprache wäre durchaus
sinnvoll. Doch Python ist mir zu weit weg von der C-Syntax, ich denke,
ich werde mir
nochmal über Perl gedanken machen!
|
Perl irgend einem Anfänger zu empfehlen ist keine gute Idee.
Perl ist ne Sprache, die für nen Anfänger sehr verwirrend ist und man
lernt dabei wohl kaum ordentlich programmieren.
Ich finde Java z.B. ehere dafür geeignet jemanden nen ordentlichen
Programmierstil beizubringen, auch C# ist da ne gute Idee.
| Quote: |
Das ist noch weiter weg von der C-Syntax oder gibt es in C "unless", ~=,
$@& vor Variablen/Funktionen etc.? Abgesehen davon ist die syntaktische
Ähnlichkeit ziemlich unwichtig.
|
Jo oder $_, %hash, $hash{'item'}. Außerdem gibts mein manchen Dingen
verschiedene Schreibweisen die ein und dasselbe tun:-)
| Quote: |
Peter Maas, Aachen
|
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Raymond Haeb Guest
|
Posted: Thu Mar 02, 2006 12:06 pm Post subject: Re: C/C++ Buch für 12jährigen: Empfehlung? |
|
|
Richard <burj-al-arab (AT) gmx (DOT) de>:
| Quote: | Ich finde Java z.B. ehere dafür geeignet jemanden nen ordentlichen
Programmierstil beizubringen, auch C# ist da ne gute Idee.
|
also ich finde grade java und eigendlich alle garbage-collectorbasierten
Sprachen für eher ungeeignet für Anfänger. Damit gewöhnt man sich nur
einen schlechten Stil an, indem Objekte erzeugt werden und man nicht
sicher weiß wann (und ob!) diese wieder zerstört werden. Deshalb kann
man zb nicht im Konstruktor Resourcen belegen und im Destruktor wieder
freigeben. Genaugenommen wird der Destruktor in Java fast gar nicht verwendet.
| Quote: | Peter Maas, Aachen
|
Raymond, Aachen
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Raymond Haeb Guest
|
Posted: Thu Mar 02, 2006 2:06 pm Post subject: Re: C/C++ Buch für 12jährigen: Empfehlung? |
|
|
Rolf Magnus <ramagnus@t-online.de>:
| Quote: | Es gibt Destruktoren in Java?
|
Ja, nennt sich (iirc) finalize.
Aber es wird halt nicht garantiert wann er aufgerufen
wird. Genaugenommen noch nicht mal ob. Es kann
Objekte geben die bis zum Programmende überleben.
Für die wird er gar nicht aufgerufen. Laut Doku soll
man sich darauf verlassen, daß das Betriebssystem dann
sowieso alles aufräumt. Mal davon abgesehn, daß ich das
auch für schlechten Stil halte, kann es Resourcen geben
die das BS nicht kennt, bzw nicht weiß daß sie zerstört werden
müssen zb temporäre Dateien.
Aber das wird langsam offtopic...
Raymond
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de |
|
| Back to top |
|
 |
Powered by phpBB © 2001, 2006 phpBB Group
|