Форум программистов, компьютерный форум CyberForum.ru

Наследование - C++

Восстановить пароль Регистрация
 
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
19.01.2011, 01:15     Наследование #1
Если я объявлю класс A, как базовый для класса B, то есть вот так:
C++
1
2
3
4
class B : public A
{
...
};
То в методах класса B будут доступны собственные элементы класса A(элементы из секции private)? Или для доступа к этим элементам я должен использовать общедоступные методы класса A?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2011, 01:15     Наследование
Посмотрите здесь:

Наследование C++
Наследование C++
C++ наследование
C++ Наследование
Наследование C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
19.01.2011, 01:49     Наследование #2
в закрытую область класса можно попасть только через общедоступные методы этого класса
volovzi
266 / 168 / 8
Регистрация: 14.03.2010
Сообщений: 501
19.01.2011, 01:54     Наследование #3
FanAizu, чтобы наследник базового класса имел доступ к его полям, они должны быть объявлены как защищённые (protected).
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
19.01.2011, 01:56  [ТС]     Наследование #4
Еще один вопрос, правда не по теме, но не хочется плодить кучу тем из-за мелочей.
Вопрос вот в чем. Допустим есть такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class A
{
    private:
    int a;
    int b;
    public:
    A(A & link)
    {
        a = link.a;
        b = link.b;
    }
};
Вопрос в следующем: правомерен ли такой конструктор копирования? Ведь данные объекта передаваемого в качестве аргумента находятся в секцие private. Или методы класса имеют доступ ко всем элементам объекта переданного в качестве аргумента, только в том случае, если этот переданный аргумент является объектом того же класса в котором определен данный метод?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
19.01.2011, 02:18     Наследование #5
>правомерен ли такой конструктор копирования?
да
>методы класса имеют доступ ко всем элементам объекта переданного в качестве аргумента, только в том случае, если этот переданный аргумент является объектом того же класса в котором определен данный метод?
да
Mr.X
Эксперт С++
 Аватар для Mr.X
2800 / 1576 / 246
Регистрация: 03.05.2010
Сообщений: 3,658
19.01.2011, 02:23     Наследование #6
Цитата Сообщение от FanAizu Посмотреть сообщение
Вопрос в следующем: правомерен ли такой конструктор копирования? Ведь данные объекта передаваемого в качестве аргумента находятся в секцие private. Или методы класса имеют доступ ко всем элементам объекта переданного в качестве аргумента, только в том случае, если этот переданный аргумент является объектом того же класса в котором определен данный метод?
Все правильно, в C++ данные инкапсулируются на уровне класса, а не на уровне объекта. Т.е. метод одного объекта класса A имеет доступ к приватным данным всех остальных объектов класса A.
Yandex
Объявления
19.01.2011, 02:23     Наследование
Ответ Создать тему
Опции темы

Текущее время: 23:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru