Шаблоны

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

Alston

#1
Создать 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

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

Это предложение? Вы предлагаете посмотреть правильно ли у вас написан код? Или вы считаете что он работает не правильно? Что то не вникаю в суть просьбы. Если есть проблема в правильности написания, лучший способ сравнить её с примером из умной книги. Наследование - это, новерно, разжеванная до молекул тема, не раз рассматривалась на этом форуме. 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() вызывается автоматически. Далее он присваивает какие-нибудь значения полю.

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

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