Я читал некоторые статьи, и во многих из них упоминалось о шаблонах выражений, можно избежать использования временных объектов. Но никто из них не упомянул, как это делается. Насколько мне известно, из-за архитектуры архитектуры проектирования выполняются с использованием временного объекта. Например, если a, b и c являются двумя матрицами, и если мы делаем a = b+c
, тогда результат b+c
хранится во временном объекте, таком как temp = b+c
, а затем результат копируется обратно на аналогичный a = temp
.Как выражения шаблонов освобождаются от временных рядов
Но если мы используем шаблоны выражений, то эта операция сложения (+) возвращает ссылку на b и c, а затем основное вычисление происходит при вычислении оператора присваивания (=). Это простая общая концепция выражения шаблона. Но я не понимаю, как он избавляется от временных объектов. Было бы хорошо, если бы кто-то мог дать только общую идею о том, как этого временного избежать.
Вы можете найти [этот ответ] (http://stackoverflow.com/a/11812468/1322972) связанный, но не дублирующий вопрос, интересный. – WhozCraig
Вы по-прежнему получаете временный объект, но не конечного типа, у вас есть временная оболочка. – Jarod42