Шаблоны

Тема в разделе "C/C++/C#", создана пользователем Alston, 29 мар 2011.

Статус темы:
Закрыта.
  1. Alston

    Alston Гость

    Создать 2 шаблонные классы с конструктором инициализации и конструктором копирования. Создать третий класс, наследующий свойства из двух классов.
    Посмотрите правильно ли...
    Код (Text):
    #include <iostream>

    template<typename T> class A
    {
    private:
    T _x;
    public:
    A(T x) : _x(x) { }
    A(const A& copy) : _x(copy._x) { }
    T getX() const { return _x; }
    };

    template<typename T> class B
    {
    private:
    T _y;
    public:
    B(T y) : _y(y) { }
    B(const B& copy) : _y(copy._y) { }
    T getY() const { return _y; }
    };

    template<typename T> class C : public A<T>, public B<T>
    {
    public:
    C(T x, T y) : A(x), B(y) { }
    };

    int main()
    {
    C<int> test(2, 4);
    std::cout << test.getX() << " " << test.getY() << std::endl;
    return 0;
    А как сделать к етой задаче еще:
    Создать объекты каждого из классов объяснить вызов конструкторов и деструкторов для каждого из объектов.???
     
  2. RiCrO

    RiCrO Гость


    Это предложение? Вы предлагаете посмотреть правильно ли у вас написан код? Или вы считаете что он работает не правильно? Что то не вникаю в суть просьбы. Если есть проблема в правильности написания, лучший способ сравнить её с примером из умной книги. Наследование - это, новерно, разжеванная до молекул тема, не раз рассматривалась на этом форуме. http://codeby.net/ipb.html?s=&sh...st&p=202792

    Для шаблона аналогично.

    ...

    По беглому осмотру вашего кода вроде бы всё написано правильно. Так что предлагаю конкретно поставить вопрос.

    Давай по-порядку.

    1) Создать объекты каждого из классов...

    Что тут не понятно таки? Создать объект чрезвычайно трудная задача?

    Пример из моего студенческого архива:

    Код (C++):
    class base
    {
    int auditory;
    int group;
    char *prepod;
    char *time;
    char *stud_name;
    public:

    base();
    ~base();

    void set_auditory(int);
    int get_auditory();

    void set_group(int);
    int get_group();

    void set_prepod(char*);
    char* get_prepod();

    void set_time(char*);
    char* get_time();

    void set_stud_name(char*);
    char* get_stud_name();

    void print();
    };

    int _tmain(int argc, _TCHAR* argv[])
    {

    base b; // Вот он родной, созданный нами, ОБЪЕКТ.
    2) ...объяснить вызов конструкторов и деструкторов для каждого из объектов.

    Чистая теория. Объясняю.

    Смотри:
    Код (C++):
    base();
    ~base();
    Первый есть конструктор. Второй же есть диструктор. Имя обоих в точности должны ( обязаны ) совпадать с именем твоего класса. Конструктор инициализирует поля твоего класса. Конструктор не имеет ( не существует ) возвращаемого значения. Дело в том, что он вызывается системой автоматически, поэтому нет вызывающей программы или функции, которым твой конструктор мог бы возвратить какое-либо значение. Именно поэтому компилятор твой отличает конструктор от других методов класса.

    Когда ты создаешь объект, конструктор base() вызывается автоматически. Далее он присваивает какие-нибудь значения полю.

    Вот собственно и всё что ты должен "объяснить".

    Диструктор... Ну тут ты уже сам постарайся. Подсказка: Тоже самое что и Конструктор, только наоборот...
     
Загрузка...
Похожие Темы - Шаблоны
  1. Edip
    Ответов:
    1
    Просмотров:
    1.041
  2. late
    Ответов:
    0
    Просмотров:
    1.325
  3. Whatka
    Ответов:
    2
    Просмотров:
    1.369
  4. dimanwv
    Ответов:
    2
    Просмотров:
    1.576
  5. lmike
    Ответов:
    0
    Просмотров:
    1.396
Статус темы:
Закрыта.

Поделиться этой страницей