• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Шаблоны

  • Автор темы Alston
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Alston

Создать 2 шаблонные классы с конструктором инициализации и конструктором копирования. Создать третий класс, наследующий свойства из двух классов.
Посмотрите правильно ли...
Код:
#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;
А как сделать к етой задаче еще:
Создать объекты каждого из классов объяснить вызов конструкторов и деструкторов для каждого из объектов.???
 
R

RiCrO

Посмотрите правильно ли...


Это предложение? Вы предлагаете посмотреть правильно ли у вас написан код? Или вы считаете что он работает не правильно? Что то не вникаю в суть просьбы. Если есть проблема в правильности написания, лучший способ сравнить её с примером из умной книги. Наследование - это, новерно, разжеванная до молекул тема, не раз рассматривалась на этом форуме. link removed

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

...

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

А как сделать к етой задаче еще:
Создать объекты каждого из классов объяснить вызов конструкторов и деструкторов для каждого из объектов.???

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

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() вызывается автоматически. Далее он присваивает какие-нибудь значения полю.

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

Диструктор... Ну тут ты уже сам постарайся. Подсказка: Тоже самое что и Конструктор, только наоборот...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!