Man kann nun kräftig darüber streiten, ob sich das friend-Konzept nicht doch mit der objektorientierten Programmierung in Einklang bringen läßt. Immerhin ist es u.a. ja nicht möglich, den Zugriff auf die privaten Elemente eine Klasse nachträglich zu erweitern, d.h. sich selbst zum Freund zu ernennen oder ähnliches.
Die strenge Datenkapselung wurde zugunsten des Laufzeitvorteils über
Bord geworfen, was man nun wiederum gutheißen kann oder nicht. Fakt
ist aber auch, daß C++ prinzipiell eine Sprache ist, die nicht zu
einer objektorientierten Programmierung zwingt, sondern diese nur unterstützt.
Man kann zwar objektorientiert programmieren, muß es jedoch nicht!
Sicherlich kann die Frage der Vereinbarkeit der beiden Konzepte hier nicht
abschließend
geklärt werden, da es auf den jeweiligen Standpunkt ankommt. Beide Seiten haben
sicherlich sowohl bessere wie auch schlechtere Argumente auf Ihrer Seite. Man sollte sich
aber jederzeit im klaren darüber sein, daß man -- wenn man es mit
der objektorientierten Programmierung ernst meint -- nur dort friends einsetzen
sollte, wo man diese auch tatsächlich benötigt.
Zudem beachte man folgendes: Friend-Funktionen können bei Vererbung und Polymorphie (siehe spätere Kapitel) Probleme bereiten; insofern stehen Friend-Funktionen den Konzepten der objektorientierten Idee auch an dieser Stelle im Wege.