Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Alecs12
1 / 1 / 0
Регистрация: 21.03.2011
Сообщений: 23
#1

Перегрузка операторов и доступ к закрытым членам

21.03.2011, 23:55. Просмотров 1210. Ответов 4
Метки нет (Все метки)

Поясните, пожалуйста, почему, когда при перегрузке операторов, елис как аргумент передается ссылка на обьект класса, то через эту ссылку мы имеем досуп з закрытым членам этого класса? Насколько я понял, закрытые данные не будут доступны черезщ обьект класса, а тут мы получаем к ним доступ.
Пример из книги Дейтелов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Array
{
public:
    Array(int = 10);
    Array(Array &); //copy constructor
    ~Array();
    int GetSize() const;
    Array& operator=(const Array&);
 
private:
    int size;
    int *ptr;
    static int arrayCount;
};
Вот реализация оператора =
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array &Array::operator =(const Array & ar)
{
    if(&ar != this)
    {
        if(size!=ar.size)
        {
            delete [] ptr;
            size = ar.size;
            ptr = new int[size];
        }
 
        for(int i=0; i<size; i++)
            ptr[i]= ar.ptr[i];
    }
 
    return *this;
}
Мы получаем досуп к закрытым данным. Почему? Данные ж закрыты. Не понимаю этого

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 23:55
Ответы с готовыми решениями:

Доступ к закрытым членам базового класса
помогите понять что я не так сделал ? #include &lt;iostream&gt; using namespace...

Доступ к закрытым членам класса(шаблона)
Вопрос почему компилятор выдает ошибку в функции main? Ситуация следующая...

Доступ к закрытым конструкторам и деструкторам
Как осуществить доступ к закрытым конструктором и деструкторам и конструкторам...

Доступ к закрытым элементам класса - Вопрос
Доброго всем времени суток. Итак, столкнулся с одной непонятной вещью,...

Доступ к членам класса
Есть два класса: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

4
fasked
Эксперт С++
4978 / 2557 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.03.2011, 00:02 #2
Цитата Сообщение от Alecs12 Посмотреть сообщение
Мы получаем досуп к закрытым данным. Почему? Данные ж закрыты. Не понимаю этого
Передается объект того же типа.
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.03.2011, 04:29 #3
Alecs12, Оператор присваивания объявлен в классе, а вне класса его определение. Поэтому мы и имеем доступ к закрытым данным. Функция является таким же членом класса, как и все остальное.
0
Alecs12
1 / 1 / 0
Регистрация: 21.03.2011
Сообщений: 23
22.03.2011, 15:49  [ТС] #4
Ну меня смущало то, что мы имеем доступ к прайват части обьекта другого класса. который передается как аргумент в функцию.
Но, спасибо, я уже разобрался, что у нас будет доступ к прайват части любых обьектов этого класса, не только того, с которым сейчас работаем.
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
22.03.2011, 16:46 #5
Alecs12, не путайте понятия "объект" и "класс". Класс - описание типа данных, объект - представитель (экземпляр) описанного типа (класса). Функции (функции-члены или методы) являются членами классов, а не объектов, в отличие от членов-данных, поэтому они имеют доступ к данным любого объекта данного класса.
0
22.03.2011, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2011, 16:46

доступ к private членам
Здравстуйте. недавно нарвался на непонятное мне поведение в С++. Вот код: ...

Доступ к приватным членам
доброго времени суток подскажите как мне правильно реализовать доступ. Есть...

Доступ к членам класса
Объект класса не может получить доступ к своим переменным?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru