30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

248 9. Klassen <strong>in</strong> <strong>C++</strong><br />

suchen müssen, die von Außenstehenden verursacht werden, denen Zugriffe<br />

gestattet wurden, vor denen man sich üblicherweise aus gutem Grund<br />

schützt.<br />

Um für die Fälle, bei denen es wirklich unumgänglich ist, zu wissen, wie<br />

man den Zugriff für Außenstehende gestattet, werfen wir e<strong>in</strong>en Blick auf das<br />

folgende Beispiel (friend_demo.cpp):<br />

1 // friend demo . cpp − demo f o r the use o f the f r i e n d d e c l .<br />

2<br />

3 #<strong>in</strong>clude <br />

4<br />

5 us<strong>in</strong>g std : : cout ;<br />

6 us<strong>in</strong>g std : : endl ;<br />

7<br />

8 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

9 /∗<br />

10 ∗ MyClass<br />

11 ∗<br />

12 ∗ j u s t a demo c l a s s<br />

13 ∗<br />

14 ∗/<br />

15<br />

16 class MyClass<br />

17 {<br />

18 friend class MyGoodFriend ;<br />

19 friend void myGoodFriendFunction ( MyClass &obj ) ;<br />

20 private :<br />

21 <strong>in</strong>t my private member ;<br />

22 <strong>in</strong>t myPrivateMethod ( ) { return ( my private member ) ; }<br />

23 public :<br />

24 MyClass ( ) { my private member = 2 0; }<br />

25 } ;<br />

26<br />

27 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

28 /∗<br />

29 ∗ MyDerivedClass<br />

30 ∗<br />

31 ∗ j u s t another demo c l a s s<br />

32 ∗<br />

33 ∗/<br />

34<br />

35 class MyDerivedClass : public MyClass<br />

36 {<br />

37 private :<br />

38 <strong>in</strong>t really private member ;<br />

39 <strong>in</strong>t reallyPrivateMethod ( ) { return ( really private member ) ; }<br />

40 public :<br />

41 MyDerivedClass ( ) { really private member = 7 0; }<br />

42 } ;<br />

43<br />

44 //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−<br />

45 /∗<br />

46 ∗ MyGoodFriend<br />

47 ∗<br />

48 ∗ j u s t a demo f o r a f r i e n d c l a s s f o r MyClass<br />

49 ∗<br />

50 ∗/<br />

51<br />

52 class MyGoodFriend<br />

53 {<br />

54 public :<br />

55 void showAccessToMyClass ( MyClass &obj )

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!