07.03.2013 Views

here - Chara - University of Illinois at Urbana-Champaign

here - Chara - University of Illinois at Urbana-Champaign

here - Chara - University of Illinois at Urbana-Champaign

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.

Lecture<br />

04—Templ<strong>at</strong>e<br />

P<strong>at</strong>terns I<br />

Chase Geigle<br />

Announcements<br />

Templ<strong>at</strong>e<br />

Specializ<strong>at</strong>ion<br />

Partial<br />

Templ<strong>at</strong>e<br />

Specializ<strong>at</strong>ion<br />

Templ<strong>at</strong>e<br />

Templ<strong>at</strong>e<br />

Parameters<br />

Next Time<br />

Original Implement<strong>at</strong>ion<br />

#include <br />

templ<strong>at</strong>e <br />

class vector {<br />

public:<br />

// purposefully not doing reference <strong>here</strong>...<br />

T oper<strong>at</strong>or[]( size_t i ) {<br />

return d<strong>at</strong>a_[ i ];<br />

}<br />

// other things<br />

priv<strong>at</strong>e:<br />

T * d<strong>at</strong>a_;<br />

};<br />

If T = bool, we are wasting an entire byte on th<strong>at</strong><br />

boolean value (which can, in theory, be represented as a<br />

single bit)<br />

We want to special case, or specialize on T = bool to<br />

change the default behavior <strong>of</strong> the class!

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

Saved successfully!

Ooh no, something went wrong!