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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Викдон
67 / 67 / 4
Регистрация: 21.11.2008
Сообщений: 226
#1

PROTECTED - C++

09.04.2009, 01:03. Просмотров 1111. Ответов 10
Метки нет (Все метки)

есть два класса:

C++
1
2
3
4
5
6
7
8
9
class Base{
 private:
  int age;
 
};
 
class Derived: public Base{
.......
};
Написано было что члены класса объявленные как private, недоступны для наследования, но объект класса Derived включает в себя поле age ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2009, 01:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос PROTECTED (C++):

protected или не protected : ) - C++
собстно не могу решить как поступить. есть абстрактный класс окошка, являющийся базовым для всех окошек. есть 3 варианта...

Protected в классах - C++
#include <iostream> using namespace std; class TPoint{ protected: int x,y; TPoint *t; ...

Protected DVD - C++
Доброго дня! Не нашел нужного раздела для подобной темы... Суть в чем - как можно определить, является ли DVD диск защищенным от...

Protected Struct - C++
Привет народ. Сижу тут с классами корочь, и вдруг вылезла ошибка (типа нет доступа), но никак не могу понять почему: ошибка в 33-й строке,...

c++ доступ к protected свойствам - C++
давайте рассмотрим доступ к protected свойствам и методам класса известно что напрямую их вызвать можно только внутри класса...

Область видимости Protected - C++
Еcть некий класс player и есть в нем переменная id в области паблик. Есть второй класс team который использует эту переменную. Пjка эти...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 01:13 #2
да... но ты не имеешь доступ к этому полю из класса Derived

Добавлено через 8 минут 21 секунду
например, так нельзя....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A
{
    private:
        int x;
};
 
class B: public A
{
    public:
        void out()
        {
            x = 100;
            cout << x;
        }
};
а так можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A
{
    protected:
        int x;
};
 
class B: public A
{
    public:
        void out()
        {
            x = 100;
            cout << x;
        }
};
0
denix
63 / 63 / 2
Регистрация: 11.01.2009
Сообщений: 130
09.04.2009, 09:43 #3
Цитата Сообщение от Викдон Посмотреть сообщение
есть два класса:

C++
1
2
3
4
5
6
7
8
9
class Base{
 private:
  int age;
 
};
 
class Derived: public Base{
.......
};
Написано было что члены класса объявленные как private, недоступны для наследования, но объект класса Derived включает в себя поле age ?
На самом деле можно получить доступ через базовый класс при private наследовании
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 09:52 #4
denix, покажите каким образом?

при

C++
1
2
3
4
5
6
7
8
9
class Base{
 private:
  int age;
 
};
 
class Derived: private Base{
.......
};
вы это имели ввиду?
0
denix
63 / 63 / 2
Регистрация: 11.01.2009
Сообщений: 130
09.04.2009, 09:55 #5
Конечно нет, я имел ввиду через привидение указателя набазовый класс
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 10:30 #6
а не можете ли вы показать как именно? а то я не могу понять, что именно вы хотите сказать.
0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
09.04.2009, 10:36 #7
Вот мне тоже интересно стало,как это возможно
0
Викдон
67 / 67 / 4
Регистрация: 21.11.2008
Сообщений: 226
09.04.2009, 12:15  [ТС] #8
наверное он имел ввиду использовать скажем метод SetAge(int) в базовом классе, и вызвать его явно в объекте класса Derived.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Base{
 public:
 void SetAge(int a){age=a;}
 
 private:
  int age;
 
};
 
class Derived: private Base{
.......
};
 
int main(){
 
Derived obj;
obj.Base::SetAge(5);
 
return 0;
}
0
denix
63 / 63 / 2
Регистрация: 11.01.2009
Сообщений: 130
09.04.2009, 12:23 #9
да нет, ребята, стормозил, не прокатит, извиняюсь
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
09.04.2009, 12:44 #10
вот так можно сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
class base
{
private:
    int x;
    friend class foo;
};
 
class foo: public base
{
public:
    void out()
    {
        this->x = 10;
        cout<<this->x<<endl;
    }
};
int main()
{
    foo f;
    f.out();
    return 0;
}
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
09.04.2009, 18:55 #11
Цитата Сообщение от Викдон Посмотреть сообщение
class Derived: private Base
только при public наследовании...


Цитата Сообщение от Викдон Посмотреть сообщение
obj.Base::SetAge(5);
можно записать уже и так: obj.SetAge(5);, так как этот метод наследуется.

ISergey, ну это естевсвтенно, так как ты класс сделал дружественным.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2009, 18:55
Привет! Вот еще темы с ответами:

Доступ внука к Protected - C++
Здравствуйте, сегодня встал перед такой проблемой. Дело в том, что создал класс, наследующий public доступом по цепочке (внук). Но если...

Ключ доступа protected - C++
В каких случаях рекомендовано использовать этот ключ доступа? Если можно, то приведите примеры.:help:

Protected Private Public - C++
Возник вопрос, немного наверное бредовый и на практике наврятли применимый, но всё же интересно, а возможно поменять модификатор доступа в...

protected и его назначение - C++
Не понятно назначение ключевого слова протектед, хотя пишут что он нужен для класса-потомка, только зачем? Вот код, растолкуйте на нём ,что...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.04.2009, 18:55
Ответ Создать тему
Опции темы

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