Материал, выделенный из кучи , не будет выходить за рамки при возврате функции.Локальная переменная , указывающая на что-то в куче, вышла бы из области видимости, но, если вы возвращаете ее из функции, то вы сохраняете копию.
Если, однако,эти переменные являются автоматическими (в стеке), они будут выходить из области видимости при возврате.
И, основываясь на вашем коде, это было что-то вроде (без публикации фактического код с тех пор, как OP заявил, что это домашнее задание, и они не хотели сохранять копии):
XTreeNode XTreeNode::copy(XTreeNode & const n) {
XTreeNode *newNode = new XTreeNode(7); // <-- Note "*", this is important.
newNode.xy=n.xy;
return newNode;
}
Вы выбрали третий из тех двух вариантов, которые я дал: -)
Поскольку вы передаете n
, он все равно будет находиться в области видимости при выходе из функции, и одна вещь, которая выходит из области видимости (newNode
), в любом случае возвращается, поэтому у вас все равно будеткопия.