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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

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

✐<br />

Capítulo 15. Polimorfismo y Funciones virtuales<br />

15.7.1. Definiciones virtuales puras<br />

Es posible proveer una definición para una función virtual pura <strong>en</strong> la clase base.<br />

Todavía implica decirle al compilador que no permita crear objetos de esa clase<br />

base abstracta, y que las funciones virtuales puras deb<strong>en</strong> ser definidas <strong>en</strong> las clases<br />

derivadas para poder crear objetos. Sin embargo, puede haber un trozo de código <strong>en</strong><br />

común que se quiera llamar desde todas, o algunas de las clases derivadas <strong>en</strong> vez de<br />

estar duplicando código <strong>en</strong> todas las funciones.<br />

Este es un ejemplo de definición de funciones virtuales.<br />

//: C15:PureVirtualDefinitions.cpp<br />

// Pure virtual base definitions<br />

#include <br />

using namespace std;<br />

class Pet {<br />

public:<br />

virtual void speak() const = 0;<br />

virtual void eat() const = 0;<br />

// Inline pure virtual definitions illegal:<br />

//! virtual void sleep() const = 0 {}<br />

};<br />

// OK, not defined inline<br />

void Pet::eat() const {<br />

cout

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

Saved successfully!

Ooh no, something went wrong!