13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 381 — #419<br />

✐<br />

13.1. Creación de objetos<br />

Esta expresión destruye el objeto y después libera el espacio dinámicam<strong>en</strong>te asignado<br />

al objeto MyType<br />

El uso del operador delete debe limitarse a los objetos que hayan sido creados<br />

mediante new. Las consecu<strong>en</strong>cias de aplicar el operador delete a los objetos<br />

creados con malloc(), calloc() o realloc() no están definidas. Dado que la<br />

mayoría de las implem<strong>en</strong>taciones por defecto de new y delete usan malloc() y<br />

free(), el resultado será probablem<strong>en</strong>te la liberación de la memoria sin la llamada<br />

al destructor.<br />

No ocurre nada si el puntero que se le pasa a delete es nulo. Por esa razón,<br />

a m<strong>en</strong>udo se recomi<strong>en</strong>da asignar cero al puntero inmediatam<strong>en</strong>te después de usar<br />

delete; se evita así que pueda ser usado de nuevo como argum<strong>en</strong>to para delete.<br />

Tratar de destruir un objeto más de una vez es un error de consecu<strong>en</strong>cias imprevisibles.<br />

13.1.4. Un ejemplo s<strong>en</strong>cillo<br />

El sigui<strong>en</strong>te ejemplo demuestra que la inicialización ti<strong>en</strong>e lugar:<br />

//: C13:Tree.h<br />

#ifndef TREE_H<br />

#define TREE_H<br />

#include <br />

class Tree {<br />

int height;<br />

public:<br />

Tree(int treeHeight) : height(treeHeight) {}<br />

~Tree() { std::cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!