Sprachmittel, die ihr nie benutzt
-
wxSkip schrieb:
Aber operator* und operator/ brauchst du?
Benutzen: klar. Überladen: Ja, auch. Iteratorenklassen, mathematische Klassen. Kommt nicht oft vor, aber auch nicht "fast nie". Und solche Klassen aktiv benutzen kommt dauernd vor, das würde ich auch zählen.
-
SeppJ schrieb:
Iteratorenklassen, mathematische Klassen.
Bei Iteratorenklassen meinst du wohl den unären?
Bei mathematischen Klassen kann man zwar a * -1 oder 0 - a schreiben, aber dort könnte man doch trotzdem den unären Minus-Operator überladen, oder?
-
SeppJ schrieb:
wxSkip schrieb:
virtuelle Vererbung true + protected-/private-Vererbung
Oh, die habe ich noch vergessen. Fallen unter nie.
Seit
boost::noncopyableverwende ich die private Vererbung sehr häufig.
-
wxSkip schrieb:
SeppJ schrieb:
Iteratorenklassen, mathematische Klassen.
Bei Iteratorenklassen meinst du wohl den unären?
Ja.
Bei mathematischen Klassen kann man zwar a * -1 oder 0 - a schreiben, aber dort könnte man doch trotzdem den unären Minus-Operator überladen, oder?
Ja, könte man. Ich streite auch gar nicht ab, dass das nützlich sein kann. Ich brauch's bloß irgendwie fast nie. Denk dran, dass ich bei mir unter fast nie auch Mittel wie switch gepackt habe. Vielleicht programmiere ich einfach anders.
-
Kann mir mal jemand erklären, was das für ein Sprachmittel sein soll?
http://cdecl.ridiculousfish.com/?q=(double+(^)(int+%2C+long+long+))foo
Das habe ich noch nie gesehen, geschweige denn benutzt.
-
Soweit ich weiss, handelt es sich um eine Spracherweiterung (C++/CLI), wo ^ vom GC verwaltete Zeiger darstellt.
-
Nicht ganz. Das ist eine eigenen Sprache von Microsoft, auch Managed C++ genannt. Quasi C++ mit .NET.
-
314159265358979 schrieb:
Nicht ganz. Das ist eine eigenen Sprache von Microsoft, auch Managed C++ genannt. Quasi C++ mit .NET.
C++/CLI ist der Nachfolger von Managed C++ und ist C++ mit .Net.
Weder Managed C++ noch C++/CLI sind neue Sprachen, beide bauen auf Erweiterungen auf. Managed C++ hat dabei ausschliesslich Kompilererweiterungen verwendet, also nach dem C++ Standard legale Erweiterungen. Ich bin mir nicht ganz sicher, ob alles legal war, aber deutlich mehr als bei C++/CLI. C++/CLI verwendet dagegen illegale Erweiterungen (z.B. bei den Schlüsselwörtern), dafür muss man nicht überal __ (doppelter Unterstrich) hinschreiben und der Code ist deshalb leserlicher.Grüssli
-
Okay, so genau weiß ich das auch nicht

-
prive schrieb:
Seit
boost::noncopyableverwende ich die private Vererbung sehr häufig.Kannste doch auch public vererben. Lohnt sich halt nur nicht der Aufwand, das "public" hinzuschreiben.
Gibt's denn irgendwelche Idiome, wo private/protected-Vererbung verwendet wird?
-
Siehe z.B. Effective C++.
private -> "is implemented in terms of".
protected -> Weiß er selbst nix dazu.
-
314159265358979 schrieb:
protected -> Weiß er selbst nix dazu.
Er weiß, aber verrät es Dir nicht.
-
private-Vererbung macht mitunter Sinn, um die Fähigkeiten der Basisklasse nutzen zu können ohne dafür eine ist-ein Beziehung darzustellen (das betrifft allerdings nur Grenzfälle, wo virtuelle Methoden oder protected-Methoden der Hilfsklasse eine Rolle spielen). protected-Vererbung ist imho unnötig.
@Sepp: Wenn du schon eine Zahlen-Klasse definierst, sollte die auch alle Operatoren unterstützen, die von int bzw. double bekannt sind - inklusive der unären Vorzeichen-Operatoren.
-
314159265358979 schrieb:
private -> "is implemented in terms of".
In der C++ FAQ lite steht's als Quasi-Komposition. Das mit "is implemented in terms of" hab ich auch schon mal gelesen. Widersprechen sich diese beiden nicht?
So oder so verrät das (mir) das aber noch keinen sinnvollen Einsatzzweck. Obwohl, irgendeiner wird sich wohl konstruieren lassen.
-
314159265358979 schrieb:
Okay, so genau weiß ich das auch nicht

Naja, Hauptsache du hast was dazu gesagt.
Könner schrieb:
So oder so verrät das (mir) das aber noch keinen sinnvollen Einsatzzweck. Obwohl, irgendeiner wird sich wohl konstruieren lassen.
-
Zitat: "Private inheritance means something entirely different (see Item 39), and protected inheritance is something whose meaning eludes me to this day."
-
volkard schrieb:
314159265358979 schrieb:
protected -> Weiß er selbst nix dazu.
Er weiß, aber verrät es Dir nicht.
Weißt du denn, was er weiß und verrätst es uns stellvertretend?

-
Sprachmittel, die ich nie einsetze:
- Exception-Spezifikationen
- variable Argumentlisten
- Speicherklassen-Schlüsselwörter
registerundauto - Bitfelder
- Digraphen, Trigraphen, alternative Schlüsselwörter (
andetc.) export
[]Funktionstemplate-Spezialisierung
[]union
[]goto
[]volatile
[]std::vector<bool>
[]Inline-asm
[*]RTTI
Sehr selten:- virtuelle Vererbung
- Pointer-to-Member (nicht Memberfunktionszeiger)
- Function-Style- und C-Casts
protected-Vererbung- eigene
new- unddelete-Operatoren const_cast,dynamic_cast- Arrays
inline- lokale Klassen (seit C++0x-Lambdas sehr selten)
- Überladung der Operatoren &&,||,,(Komma),binärer Operatoren,op-(unär) -> SEHR selten
- Überladung operator+, -, !=, ... (nur indirekt über boost::operators)
-
private Vererbung is fuern Arsch. Aggregation/Komposition ist in 99,999999999% der Faelle besser.
Und protected Vererbung is einfach nur zu 100% ueberfluessig.
-
Devenv schrieb:
private Vererbung is fuern Arsch.
Das würde ich so pauschal nicht behaupten.