Warum kann ich aussetzen, private Mitglieder, wenn ich wieder ein Verweis aus einem öffentlichen member-Funktion?

In der code-snippet, ich bin in der Lage, Zugriff auf die privaten member-variable außerhalb der Gültigkeitsbereich der Klasse. Aber dies sollte nie getan werden, warum ist es erlaubt in diesem Fall? Ist es eine schlechte Praxis zu erhalten zurückgegeben private variable per Referenz ?

#include <iostream>
#include <cstdlib>

class foo
{
    int x;
    public:
        foo(int a):x(a){}
        int methodOne() { return x; }
        int& methodTwo() { return x; }
};

int main()
{
    foo obj(10);
    int& x = obj.methodTwo();
    x = 20;              //With this statement, modifying the state of obj::x

    std::cout << obj.methodOne();
    getchar();
    return 0;
}

Und in Bezug auf diese Methode, was bedeutet der return-Typ mitteilen ? Und auch wenn ich das zurück geben von dieser Art ?

int& methodTwo() { return x; }

PS: es tut mir Leid, wenn die Betreffzeile ist vage. Kann jemand es ändern, um die relevanten Inhalte hier. Danke.

InformationsquelleAutor Mahesh | 2011-01-16
Schreibe einen Kommentar