Name
locale::facet class — Base class for locale facets
Synopsis
class locale::facet{ protected: explicit facet(size_t refs = 0); virtual ~facet( ); private: facet(const facet&); // Not defined void operator=(const facet&); // Not defined };
The facet
class is the base
class for all facets. A derived class must also declare a public,
static data member of type locale::id
whose name is id
. Even a derived class must declare its
own id
member because it must
have an identifier that is distinct from that of the base-class
facet. Any other members for a custom facet are entirely up to the
programmer; the derived class does not need to provide a copy or
default constructor or an assignment operator.
The locale
class assigns a
value to id
when the facet object
is added to a locale. You never need to examine or alter the
id
member; it is managed entirely
by locale
.
The explicit constructor for facet
takes a single argument, ref
. If ref
==
0
, the facet
object is not deleted until the last
locale that uses the facet is destroyed. If ref
==
1
, the facet
object is never destroyed. The
standard facet classes (ctype
,
etc.) also take a ref
parameter
and pass it directly to the inherited facet
constructor. Custom facets can do
whatever the programmer wants, such as relying on the default value
of 0
to manage the facet’s
lifetime automatically.
For example, suppose you want to define a facet that captures the locale-specific preferences for units of measure, such as length and weight. A program can store ...
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.