Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

06.08.2003, 23:10

Call by Reference

Sind Funktionen mit dem Referenzoperator (&)wirklich schneller? Nur weil kein Kopierkonstruktor aufgerufen wird?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

07.08.2003, 00:18

jap.

Beispiel aus dem RealLife:

Was ist wohl schneller? Du schüttest dir eine Tasse Kaffee auf und gehst in dein Zimmer (Das ist &)

= oder =

schüttest dir 2 Tassen Kaffee auf lässt eine in der Küche und mit der Anderen gehst du in dein Zimmer. (Das ist Ohne &)

Kommt aber IMMER auf die Verwendung an :)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

07.08.2003, 10:57

danke ;D;D;D;D

Anonymous

unregistriert

5

07.08.2003, 11:28

Also ist es besser, wenn ich sooft wie möglich mit const und & arbeite?

Anonymous

unregistriert

6

07.08.2003, 11:43

const und &

ja, würde ich Dir empfehlen.
Die Referenz auf eine Variable zwingt Dich, diese Variable immer im Parameter mit anzugeben.
Stattdessen kannst Du aber auch die Adresse dieser Variable übergeben, also z. B. func(const 3dvector* pVector)
Das drückt aus, dass die Variable pVector von func nicht verändert wird (werden sollte)
Wenn eine funktion einen Wert zurückliefert, ohne Objektvariablen zu verändern, würde ich auch die Funktion als const deklarieren.
Also const 3dvector* getVector() const.
Damit weißt Du, dass diese Funktion nix in Deinem Objekt verändert und einen kont Zeiger zurückliefert.
Das hilft ungemein...

Anonymous

unregistriert

7

07.08.2003, 11:55

Wie kann eine Funktionen einen const-Wert zurückliefern?

Anonymous

unregistriert

8

07.08.2003, 12:00

konstanter Wert

na wenn Du schreibst:
const 3dvector* pVec = cobject::getvector();

dann ist dieser Vector nicht mehr änderbar (ausgenommen->cast)
und du kannst sicherstellen, dass dieser Wert nur noch gelesen werden kann.
bei Set-Methoden sollte dann auch konsequent mit const gearbeitet werden

der Aufruf von:
other->SetVector(pVec)

erfordert die Deklaration:
void SetVector(const 3dvector* pvec);

Bei GetMethoden würde ich immer zwei Methoden zur Verfügung stellen, also z. B. die oben genannte:
const 3dvector* get() const
{ return &m_vVec; }
und zusätzlich noch:

void get(3dvector* pVec) const
{ *pVec = m_vVec; }

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

07.08.2003, 13:13

Kleiner Schönheitsfehler: Typnamen dürfen nicht mit Zahlen beginnen ("3dvector" geht also nicht) ;)!

Werbeanzeige