Zum Inhalt springen

my proggie need n friend !!! *fg*


Empfohlene Beiträge

Geschrieben

Hi Leutz !!!

Hab vor ner Woche angefangen mit dem Buch "Practical C++ programming" ( O' Reilly Verlag ) C++ zu lernen. Bin dabei auf friends gestoßen. Nur leider weiß ich net wie mann diese "Freunde" verwendet. Hatt da jmd von euch Plan? Hier mal mein Proggie:

#include <iostream.h>

class menue

{

private:

int return_value;

public:

int execute_menue (void)

{

cout << " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±" << '\n';

cout << " ± ±" << '\n';

cout << " ± Well if you think youself smart enter an int ±" << '\n';

cout << " ± ±" << '\n';

cout << " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±" << '\n';

cout << "\nI_AM_A_PROMPT> ";

cin >> return_value;

return( return_value );

}

friend int i_am_a_friend_of_menue(int return_value);

};

/*******************************************\

* *

* class menue --- callin execute_menue *

* -> gettin the int return_value *

* *

* printing private var withi_am_a_friend... *

* *

\*******************************************/

// **** do I need this prototype ? *****

int i_am_a_friend_of_menue(int a);

void main()

{

// creatin an instance of class

menue member;

// callin return_value with instance

cout << i_am_a_friend_of_menue( member.execute_menue() );

// printing return_value with i_am_a_friend_of_menue

cout << "\nNow return_value will printed with a_friend_of_menue\n";

// how the fuck can i call the friend ???

cout << i_am_a_friend_of_menue( ??? );

}

int i_am_a_friend_of_menue(int return_value)

{

return return_value;

}

Hat jmd. vielleicht Bsp. Prog. zu friends ???

Wäre nett, wenn er mir dies mailen könnte.

THX PhOeniX

Geschrieben

Hier mal ein Bsp. Programm, daß ich gefunden habe. Kappier ja eigentlich alles, bis auf --- demo& ---

Was bedeutet bitte der Adress-Operator nach ner Variable?

/* Friend.cpp Friends */

#include <iostream>

using namespace std;

class demo

{

private:

int wert;

friend int func(demo&); // Friend-Deklaration

};

int func(demo& objekt)

{

objekt.wert = 111;

return objekt.wert;

}

int main()

{

class demo d;

cout << func(d);

return 0;

}

Geschrieben

Das ist in dem Fall kein Adressoperator sondern ein Referenz operator.

Der Funktion wird als Parameter eine Reference auf Objekt vom Typ demo übergeben.

Es wird also nicht wie beim normalen call by Value der Wert des Objektes( also ne Kopie des Objekts) sondern das Objekt selber übergeben.

Zwei Gründe hierfür:

Erstens die Aufgerufende Funkktion kann das Objekt des Aufrufers ändern ( wenn erwünscht ).

Zweitens wenn du mit großen Objekten ( viele Elemente in einer Klasse ) arbeitest kann es sein daß du eine große Menge von Daten auf den Stack kopieren mußt um ein Objekt als Wert zu übergeben.

Zudem werden bei Kopieren die Elemente Memberweise kopiert

( das heist es wird nicht einfach der Speicherbereich kopiert ).

Dadurch kann die ganze Sache auch sehr zeitintensív werden,

denn es werden nicht nur die Kopierfunktionen des eigentlichen Objekts aufgerufen sondern auch von seinen Membern.

Also

Demo * pD = &d ; // in dem Fall ist & Adressoperator

Demo &rD = d; // In dem Fall dient & als Referenzoperator

Nich verwechseln.

Hoagi

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...