Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2013, 10:32   #1
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию Непонятки в форме записи

Здравствуйте, помогите разобраться с такой записью.
Есть класс контейнер:
template <typename T>
class Class1 : public Class2

Также есть следующая запись:
typedef Class1<char*> Class3;

И ниже создается класс со следующим свойством:
Class3 *name;

И самый непонятный момент это наследование:
class Class4 : public Class3

Я не много не понимаю эту запись. По отдельности все понятно, а как оно работает вместе не очень.
Может это и чушь, но это моя чушь и я ее никому не отдам.

Последний раз редактировалось Shad0wF1rst; 10.09.2013 в 11:00.
Shad0wF1rst вне форума Ответить с цитированием
Старый 10.09.2013, 19:45   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Цитата:
Также есть следующая запись:
typedef Class1<char*> Class3;
Class3 это тоже самое что и Class1<char*>. Просто его объявили с помощью typedef, чтобы не писать Class1<char*> Obj, а просто Class3 Obj. Согласитесь запись выглядить попроще.

Цитата:
И ниже создается класс со следующим свойством:
Class3 *name;
Создается не класс, а указатель на объект Class3

Цитата:
И самый непонятный момент это наследование:
class Class4 : public Class3
это можно записать попроще:

Код:
class Class4 : public Class2<char*>
Т.к. Class4 не является шаблоном, то если я не ошибаюсь он не может наследовать шаблонный класс. В данном случае он наследует Class2<char*>, т.е. уже класс с конкретным типом char*.

Как пример:
Код:
template<class Type> class Test_1
{
protected:
     Type m_Variable;
public:
     virtual void Print() { ... }
};

class Test_2 : public Test_1<char*>
{
public:
     virtual void Func() { ... }
};
После наследования класс Test_2 будет таким:
Код:
class Test_2 : public Test_1<char*>
{
protected:
     char* m_Variable; // Унаследованная переменная
public:
     virtual void Print() { ... } // Унаследованная функция
     virtual void Func() { ... }
}
;
Если вы обратите внимание на тип m_Variable в классе Test_1 и на тип m_Variable в классе Test_2, то увидите, что в классе Test_1 переменная может быть любым типом, а в классе тип задан жестко

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

Последний раз редактировалось kineziz; 10.09.2013 в 19:54.
kineziz вне форума Ответить с цитированием
Старый 11.09.2013, 09:35   #3
Shad0wF1rst
Форумчанин
 
Регистрация: 11.01.2013
Сообщений: 149
По умолчанию

Спасибо за объяснение и его наглядность. Вы во всем правы. Единственное оправдаюсь за свою неточность в изложении, из за чего возникло недопонимание.

Цитата:
И ниже создается класс со следующим свойством:
Class3 *name;
Здесь я все правильно написал. Просто надо было подробнее написать:
Код:
class OtherClass 
{
    privet:
    Class3 *name;
}
Я знаю что создается указатель на объект, но оно еще является свойством класса, как я и говорил ранее.
Может это и чушь, но это моя чушь и я ее никому не отдам.
Shad0wF1rst вне форума Ответить с цитированием
Старый 11.09.2013, 10:37   #4
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Цитата:
Код:
class OtherClass 
{
    privet:
    Class3 *name;
}
privet: ???

Забавная опечатка.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Источник записи в форме Wind-up Bird Microsoft Office Access 1 22.06.2012 11:18
Выделить цветом записи в ленточной форме Swatch Microsoft Office Access 2 06.09.2010 14:43
Выполнить поиск записи в форме Познающий Microsoft Office Access 6 08.06.2010 19:09
Удалить записи в форме Swatch Microsoft Office Access 2 22.02.2010 16:57
Непонятки с рисованием на форме ROD Общие вопросы C/C++ 2 03.02.2009 18:14