Перегрузка операторов и доступ к закрытым членам
Добавлено: 22 мар 2011, 00:00
Поясните, пожалуйста, почему, когда при перегрузке операторов, если как аргумент передается ссылка на объект класса, то через эту ссылку мы имеем доступ к закрытым членам этого класса? Насколько я понял, закрытые данные не будут доступны через объект класса, а тут мы получаем к ним доступ.
Пример из книги Дейтелов
class Array
{
public:
[INDENT]Array(int = 10);
Array(Array &); //copy constructor
~Array();
int GetSize() const;
Array& operator=(const Array&);[/INDENT]
private:
[INDENT]int size;
int *ptr;
static int arrayCount;[/INDENT]
};
Вот реализация оператора =
Array &Array:
perator =(const Array & ar)
{
if(&ar != this)
{
[INDENT]if(size!=ar.size)
{
[INDENT]delete [] ptr;
size = ar.size;
ptr = new int[size];[/INDENT]
}
for(int i=0; i<size; i++)
[INDENT]ptr= ar.ptr;[/INDENT]
}[/INDENT]
return *this;
}
Мы получаем доступ к закрытым данным. Почему? Данные ж закрыты. Не понимаю этого
Пример из книги Дейтелов
class Array
{
public:
[INDENT]Array(int = 10);
Array(Array &); //copy constructor
~Array();
int GetSize() const;
Array& operator=(const Array&);[/INDENT]
private:
[INDENT]int size;
int *ptr;
static int arrayCount;[/INDENT]
};
Вот реализация оператора =
Array &Array:

{
if(&ar != this)
{
[INDENT]if(size!=ar.size)
{
[INDENT]delete [] ptr;
size = ar.size;
ptr = new int[size];[/INDENT]
}
for(int i=0; i<size; i++)
[INDENT]ptr= ar.ptr;[/INDENT]
}[/INDENT]
return *this;
}
Мы получаем доступ к закрытым данным. Почему? Данные ж закрыты. Не понимаю этого
