Этот оператор является инициализацией копирования Stack
с именем copy
из возвращаемого значения CopyStack()
. Там нет назначения.
Stack copy=CopyStack();
В этой функции комментарий некорректен. Не вызывается конструктор копирования, поскольку возвращаемое значение является ссылкой.
Stack& Stack::CopyStack()
{
return *this; //this statement will invoke copy contructor
}
Это означает, что первоначальная инициализация, по сути, является копированием-конструкцией из переменной *this
.
Если возвращаемое значение было по значению, то инициализация копирования была бы из временной, но той, которая могла бы быть корректно устранена компилятором.
Я не вижу смысла в функции CopyStack
. Было бы более логично просто выполнить прямую инициализацию:
Stack copy(*this);