C++ для начинающих Шаблоны классов Первое знакомство

Начинающие программисты постоянно могут видеть использование шаблонов в различных исходных кодах. Иногда начинающие программисты просят помочь с какой-то работой более опытных программистов, и часть этих более опытных программистов не задумываясь выдает им коды с использованием шаблонов. Начинающий может хорошо понимать что такое шаблон и зачем он нужен, но не понимать как прочитать код с использованием этих самых шаблонов.
Я уже описывал Шаблоны функций в С++ для начинающих, но кроме этого в С++ часто применяются шаблоны классов.

Для того чтобы человек мог понять что такое шаблон класса и как шаблон класса использовать в своем коде, я решил использовать один из самых простых вариантов на мой взгляд. Выбор пал на создание класса массив. Думаю, что вы знакомы с понятием массива и поэтому знаете как добавить и отобразить массив на экране. У массива должен быть тип, его тип соответствует типу данных, которые он хранит в себе. Внутри массива определенное число данных, поэтому должен быть счетчик элементов. Ничто не мешает создать простой класс Массив, который будет выполнять простые действия: Добавление и Отображение элементов

Код С++ Шаблоны классов Создание класса без шаблонов

Это пример создания обычного класса. У программистов иногда возникает необходимость создания такого же класса, но в котором отличается только тип данных. Например, может потребоваться создание класса, в котором требуется создание массива, который будет хранить в себе и обрабатывать не целочисленные переменные, а строковые. Как вариант, можно дописать кучу классов для каждого из типов переменных, но это не дело. Уйдет некоторое время и код получится большим, громоздким. Чем больше кода, тем проще в нем ошибаться и тем сложнее искать ошибки (это должно быть понятно тем, у кого голова дружит с логикой). Вот тут и приходят на помощь шаблоны классов.

По коду могу добавить, что в моем случае после отображения данных происходит сброс текущей позиции в ноль. Для этого использована глобальная переменная. В остальном вы можете наблюдать очень большое сходство с первым кодом.

  • Когда объявляете метод вне класса, то сначала прописывается шаблон с необходимыми параметрами (их может быть и не один), потом класс с параметрами из шаблона. (Параметры в угловых скобках). Сам метод описывается обычным образом с использованием оператора глобального разрешения ::, но при необходимости, внутри принимаемых методом параметров тип принимаемой переменной подменяется на тип, принимаемый шаблоном класса.
  • Кроме уже сказанного, само объявление переменной, типа класса с использованием шаблона слегка отличается от обычного объявления переменной типа простого собственного класса. В угловых скобках указываются параметры, которые должен принимать шаблон. Вот и все премудрости. Возможно, я мог кого-то запутать этими словами, но все это читается по коду.

    • Шаблоны классов — Обобщенное определение некоторого семейства классов, имеющих схожую структуру, но различных в смысле используемых типов или констант.

    =======

    Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

    10 комментариев: C++ для начинающих Шаблоны классов Первое знакомство

    • lu говорит:

      спасибо за пример, очень понятно расписано)

    • Аноним говорит:

      👿 👿 👿 👿

    • Gen говорит:

      Не знаю как в другой среде,но в CodeBlock коды не работают.Выдается ошибка нет подходящей функции Arr.Add(100);
      Переписываю строку 12

      и соответственно в строке 16

      все работает.
      В строке 25 должно быть

      и в строке 39 корректнее

    • Gen говорит:

      Massiv Arr2;
      const char*

      Автор сайта отвечает:
      По первому коду. Найдите различия называется (может быть полезным)

      ===============================
      т.к. меня прямо не просит никто исправить то, где у меня косяки, то я и не буду. Но подскажу.

      Второй код то же самое исправление (оно одно ключевое, остальное по мелочи)

      одно, но исправлять надо не в одном месте. Сама ошибка просто ключевая одна.

    • SergeNikol говорит:

      Всем привет!

    • Аноним говорит:

      Запятые исправьте. Мозг выворачивает.

    • Руслан говорит:

      Все хорошо только ссылку на константу  в  visual studio не получается сделать. Может другие компиляторах это разрешено .

      • admin говорит:

        Как Вы пытаетесь? Я не могу или помочь, или подсказать, или адекватно ответить, не зная, как Вами испробовалось.

    • йцу говорит:

      КОНСТРУКТОР ГДЕ?

    Добавить комментарий

    Ваш e-mail не будет опубликован.

    Поиск

     
         
    Яндекс.Метрика

    НАГРАДИ АВТОРА САЙТА
    WEBMONEY
    R375024497470
    U251140483387
    Z301246203264
    E149319127674
    
    
    sanya: а я фортран знаю flamekeeper: настолько ли глубоко? sanya: глубоко. узнал после того как в универе препода на$$$ послал. каждый день программы писал на фортане в наказание sanya: только сейчас понимаю, что сделал это не зря)

    Выражаю свою признательность

    • Максиму очень признателен за указание на мои ошибки и неточности.
    • Sergio ===> за оказание помощи в исправлении моих ошибок
    • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок