print(vl); MyVector v2

Автор admin Суббота, 23 мая 2009 11:32

print(vl); MyVector v2; init(v2); print(v2); MyVector v3; v3 – vl + v2; print(v3): // Теперь поддерживается: MyVector v4; v4 = vl + v2 + v3; print(v4); MyVector v5; v5 = vl + v2 + v3 + v4; Модели компиляции шаблонов 247 print(v5): } ///:- Шаблон определяет типы операндов по аргументам Left и Right вместо того, чтобы фиксировать их заранее. Шаблон MyVectorSum получает эти два дополнительных параметра, что позволяет представить сумму произвольной комбинации пар MyVector и MyVectorSum. Оператор присваивания теперь оформлен в виде шаблона функции класса. В результате любая пара может комбинироваться с любой парой , поэтому объекту MyVector может быть присвоен объект MyVectorSum, содержащий ссылки на любую возможную пару типов MyVector и MyVectorSum. Как и в предыдущем примере, давайте проследим за ходом присваивания, начиная с выражения v4 = vl + v2 + v3; Поскольку итоговые выражения получаются весьма громоздкими, в дальнейших пояснениях мы сокращаем MyVectorSum до MVS и не приводим аргументы шаблонов. Сначала выполняется операция vl + v2, для которой вызы


Комментарии закрыты.