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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
#1

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

19.01.2011, 01:15. Просмотров 378. Ответов 5
Метки нет (Все метки)

Если я объявлю класс 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++
Пытаюсь разобраться в наследовании Есть класс class File { public: struct comp { char num; // Имя переменной char st;...

Наследование - C++
Создать класс CPoint – точка. На его основе создать классы CcoloredPoint и CLine. На основе класса CLine создать класс CColoredLine ...

Наследование - C++
Какой практический смысл private-наследования? (Понятно, что это инкапсуляция базового класса)

Наследование в С++ - C++
Здравствуйте! #include <iostream> using namespace std; class exp{ public: virtual exp* diff()=0; virtual void...

Наследование - C++
Доброе дня, прошу вас помочь в решение данной задачи.

Наследование - C++
Всем привет. Задали работу в которой я не могу изначально правильно расставить классы. Программа по управлению школы. классы: 1....

Наследование - C++
Тёмного времени суток! Столкнулся с проблемой, основной смысл которой заложен ниже class Parent { void F() = 0; } class...

Наследование - C++
Добрый вечер! Ребята, почему в данном примере #include <iostream> using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
19.01.2011, 01:49     Наследование #2
в закрытую область класса можно попасть только через общедоступные методы этого класса
volovzi
267 / 169 / 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
1641 / 1269 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
19.01.2011, 02:18     Наследование #5
>правомерен ли такой конструктор копирования?
да
>методы класса имеют доступ ко всем элементам объекта переданного в качестве аргумента, только в том случае, если этот переданный аргумент является объектом того же класса в котором определен данный метод?
да
Mr.X
Эксперт С++
3042 / 1687 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.01.2011, 02:23     Наследование #6
Цитата Сообщение от FanAizu Посмотреть сообщение
Вопрос в следующем: правомерен ли такой конструктор копирования? Ведь данные объекта передаваемого в качестве аргумента находятся в секцие private. Или методы класса имеют доступ ко всем элементам объекта переданного в качестве аргумента, только в том случае, если этот переданный аргумент является объектом того же класса в котором определен данный метод?
Все правильно, в C++ данные инкапсулируются на уровне класса, а не на уровне объекта. Т.е. метод одного объекта класса A имеет доступ к приватным данным всех остальных объектов класса A.
Yandex
Объявления
19.01.2011, 02:23     Наследование
Ответ Создать тему
Опции темы

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