NULL
-
JustAnotherNoob schrieb:
Das Ziel von C++0x war die Sprache effizienter zu machen und nicht sie einfacher zu machen.
naja, diese freaks, die sich den 'nullptr' ausgedacht haben, bezwecken unter anderem 'Make C++ easier to teach and learn' (steht in dem pdf so drin). das erreichen sie damit bestimmt nicht.
DEvent schrieb:
Das ist der C++ Weg
const // this is a const object... class { public: template<class T> // convertible to any type operator T*() const // of null non-member { return 0; } // pointer... template<class C, class T> // or any type of null operator T C::*() const // member pointer... { return 0; } private: void operator&() const; // whose address can't be taken } nullptr = {}; // and whose name is nullptr
und das der C Weg:
#define NULL ((void *)0)
ja, C++ eben, darüber muss man kein wort mehr verlieren. da haben sie schon die möglichkeit, ihre sprache mit templates zu pimpen, aber trotzdem wollen welche für 'nen 0-pointer ein extra keyword einbauen. kannst ja mal neue schlüsselwörter wie 'one', 'two', three' für häufig genutzte integer-konstanten vorschlagen. kommt bestimmt voll gut an in der c++-community.
-
@fricky: Wenn du schon flamen musst, dann doch bitte richtig, C++ hat sehr wenige Schlüsselwörter und deswegen wäre es richtiger darauf rumzuhacken, dass es erst jetzt kommt.
-
JustAnotherNoob schrieb:
C++ hat sehr wenige Schlüsselwörter und deswegen wäre es richtiger darauf rumzuhacken, dass es erst jetzt kommt.
findest du? ich finde es sind verdammt viele. nimm nur mal den code, den DEvent und ich zitiert haben. fast alles sind schlüsselwörter.
-
+fricky schrieb:
und das ist dann gleichbedeutend mit (void*)0, nur als extra keyword, oder was?
Nein, (void*)0 läßt sich nicht mehr in einen beliebigen anderen Pointer in C++ konvertieren! Es müßte explizit gecastet werden.
-
JustAnotherNoob schrieb:
C++ hat sehr wenige Schlüsselwörter
Smalltalk hat 5 keywords (nil, true, false, self, super), lisaac 4, io wohl noch weniger. Wieviele hat C++ - 62? 63?
-
Smalltalk hat 5 keywords (nil, true, false, self, super), lisaac 4, io wohl noch weniger. Wieviele hat C++ - 62? 63?
Okay, da hast du natürlich Recht. Ich glaube aber kaum, dass fricky sich auf Smalltalk stützt, seit wann nimmt er Sprachen, die nicht total ähnlich sind aber trotzdem soviel besser sein sollen als C++?(Sprich eher z.B. Java).
Korrekter formuliert sollte es lauten:
C++ verwendet Schlüsselwörter unheimlich gerne kontextabhängig.
-
das ist wahr. Ich sage nur static ...
-
u_ser-l schrieb:
das ist wahr. Ich sage nur static ...
Viel schlimmer finde ich const (für Memberfunktionen) und class (anstelle von typename). Und mit C++ 0x wirds noch schöner:
enum class Foo : float { bar = 3.14 }; class Baz { Baz (void) = delete; }; template <typename... Args> void getArgumentCount (void) { return sizeof... (Args); }
-
audacia schrieb:
Baz (void) = delete;
sieht lustig aus, lass mich raten: dieses programm löscht sich nach dem ersten aufruf von selbst. im ernst: das hat irgenwas mit automatischem speichermanagement zu tun, ne?
-
Nein;
= delete
legt fest, daß die entsprechende Methode nicht benutzt werden darf. Das ist ein Workaround für den Designfehler, daß für Klassen standardmäßig ein Defaultkonstruktor, ein Kopierkonstruktor und ein Zuweisungsoperator generiert wird.Entsprechend soll es
= default;
geben, das explizit die Default-Version anfordert.Edit: Typographie.
-
audacia schrieb:
Nein;
= delete
legt fest, daß die entsprechende Methode nicht benutzt werden darf. Das ist ein Workaround für den Designfehler, daß für Klasse standardmäßig ein Defaultkonstruktor, ein Kopierkonstruktor und ein Zuweisungsoperator generiert wird.
Entsprechend soll es= default;
geben, das explizit die Default-Version anfordert.aha, ich hab's auch grad selbst gelesen: http://en.wikipedia.org/wiki/C%2B%2B0x
ich persönlich hätte ja ein paar #pragmas für sowas definiert, aber egal. C++ soll wohl das chinesich unter den programmiersprachen werden. bestimmt läuft's APL bald den rang ab.
-
+fricky schrieb:
[ich persönlich hätte ja ein paar #pragmas für sowas definiert, aber egal. C++ soll wohl das chinesich unter den programmiersprachen werden. bestimmt läuft's APL bald den rang ab.
Aber #pragmas sind allgemein für irgendwelche compilerspezifischen Dinge gedacht. Das Gedöhns mit dem delete und default Hokus-Pokus soll aber standardisiert sein.
-
Tachyon schrieb:
+fricky schrieb:
[ich persönlich hätte ja ein paar #pragmas für sowas definiert, aber egal. C++ soll wohl das chinesich unter den programmiersprachen werden. bestimmt läuft's APL bald den rang ab.
Aber #pragmas sind allgemein für irgendwelche compilerspezifischen Dinge gedacht. Das Gedöhns mit dem delete und default Hokus-Pokus soll aber standardisiert sein.
ok, aber ein paar spezielle #pragmas könnte man ja standardisieren. spricht doch nichts dagegen, wie so'ne metasprache, um gewisse features ein- und auszuschalten. es hätte z.b. den vorteil, dass der code noch von älteren compilern verstanden würde. die würden unbekannte pragmas einfach ignorieren (und hätten eben diese features nicht zur verfügung).
-
ja ich weiss auch nicht was das hersoll. ich komme schon mit den ganzen cast dingen in c++ nicht klar! ich brauch doch nicht den compiler der mir sagt was ich darf und was nicht. ich bin der programmierer ich weiss es selbst!!das stört mich in c++ im vgl zu c so. ständig motzt der compiler wegen irgendwelchen illegal cast static_cast reinterpret_cast etc der ganze schwachsinn!
-
c++hater schrieb:
ich komme schon mit den ganzen cast dingen in c++ nicht klar!
Es gibt auch nix zu casten.
-
c++möger schrieb:
c++hater schrieb:
ich komme schon mit den ganzen cast dingen in c++ nicht klar!
Es gibt auch nix zu casten.
wozu gibts des dann alles? das ist alles unnötig. ich weiss als programmierer ja selbst was ich darf und was nicht...bzw wenn ich es ned weiss muss ich wohl c++ benutzen. naja jedem das seine.
-
die Typisierung ist dazu da, mehr Fehler schon zur Compilezeit zu erkennen, damit zur Laufzeit weniger schief geht - also letztendlich, den Programmierer vor seiner eigenen Schusseligkeit zu schützen. Dem selben Zweck dient letztendlich auch OOP. Ein Programmierer mit IQ 160+ und ausgeprägtem Kurzzeitgedächtnis könnte wohl auch ohne Typprüfung und ohne OOP fehlerfrei laufende, riesige Softwaresysteme mit 1e6+ Zeilen schreiben. Dem Durchschnittsprogrammierer mit IQ < 160 muß der Compiler aber nunmal etwas mehr auf die Finger schauen.
-
u_ser-l schrieb:
die Typisierung ist dazu da, mehr Fehler schon zur Compilezeit zu erkennen, damit zur Laufzeit weniger schief geht
Allerdings führen Compilezeitfehler niemals zu Laufzeitfehlern.
-
naja hab ich ned nötig. aber wers braucht..
-
c++magic schrieb:
Allerdings führen Compilezeitfehler niemals zu Laufzeitfehlern.
natürlich nicht - wird ja kein exe erzeugt.