[an error occurred while processing this directive]
C++
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Ljubitel 25 января 2006 г. 22:37


Пишу простенькую программку,чтобы разобраться:

class BaseClass
{
public:
virtual void SetData (AnsiString NName, unsigned int NNumber) = 0;
BaseClass()
{
Name = "Base";
Number = 100;
};
BaseClass (AnsiString NName)
{
Name = NName;
};
protected:
AnsiString Name;
unsigned int Number;
};

class SubClass : public BaseClass
{
public:
virtual void SetData (AnsiString NName, unsigned int NNumber)
{
this->Name = NName;
this->Number = NNumber;
};
};

int main(void)
{
SubClass sc;
SubClass *nsc = ≻

nsc->SetData("SubBase",50);

return 0;
}

Далее - запускаю ее пошагово,и что вижу - при создании объекта sc
в нем появляются две переменные инициализированные конструктором
по умолчанию базового класса. Хорошо,я согласен,что конструктор
наследуется,но разве protected переменные могут наследоваться ??
Мы же наследуем только public секцию,а там переменных нет.
Это определенно переменные базового класса,ведь другие в субклассе
не определены. Если же их определить,то функция SetData будет
работать с переменными определенными в субклассе, но тем неменее
protected переменные базового класса будут создаваться и к ним будет
доступ. Может кто объяснит почему наследуются protected переменные
хотя явно указано - наследовать public секцию ??


Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru