2. Terminology
- An identifier
is a name which is used to refer to a variable, constant, function or type in C++.
When necessary, an identifier may have an internal structure which consists of a
prefix, a name, and a suffix (in that order).
- A class is a user-defined data type which consists of data elements and
functions which operate on that data. In C++, this may be declared as a
class;
it may also be declared as a struct or a union. Data defined
in a class is called member data and functions defined in a class are called
member functions.
- A
class/structunion is said to be an
abstract data type
if it does not have any public or protected member data.
- A structure
is a user-defined type for which only public data is specified.
- Public members
of a class are member data and member functions which are everywhere accessible
by specifying an instance of the class and the name.
- Protected members
of a class are member data and member functions which are accessible by specifying
the name within member functions of derived classes.
- A class template
defines a family of classes. A new class may be created from a class template by
providing values for a number of arguments. These values may be names of types or
constant expressions.
- A function template
defines a family of functions. A new function may be created from a function template
by providing values for a number of arguments. These values may be names of types
or constant expressions.
- An enumeration type is an explicitly declared set of symbolic integral
constants. In C++ it is declared as an
enum.
- A typedef is another name for a data type, specified in C++ using a
typedef
declaration.
- A reference is another name for a given variable. In C++, the `address
of' (
&) operator is used immediately after the data type to
indicate that the declared variable, constant, or function argument is a reference.
- A macro is a name for a text string which is defined in a
#define
statement. When this name appears in source code, the compiler replaces it with
the defined text string.
- A constructor
is a function which initializes an object.
- A copy constructor
is a constructor in which the first argument is a reference to an object that has
the same type as the object to be initialized.
- A default constructor
is a constructor which needs no arguments.
- An overloaded function name is a name which is used for two or more functions
or member functions having different types. [The type of a function is given
by its return type and the type of its arguments.]
- An overridden member function is a member function in a base class which
is re-defined in a derived class. Such a member function is declared
virtual.
- A pre-defined data type is a type which is defined in the language itself,
such as
int.
- A user-defined data type is a type which is defined by a programmer in
a
class, struct, union, enum,
or typedef
definition or as an instantiation of a class template.
- A pure virtual function is a member function for which no definition is
provided. Pure virtual functions are specified in abstract base classes
and must be defined (overridden) in derived classes.
- An accessor
is a function which returns the value of a data member.
- A forwarding function
is a function which does nothing more than call another function.
- A constant member function
is a function which may not modify data members.
- An exception is a run-time program anomaly that is detected in a function
or member function. Exception handling provides for the uniform management of exceptions.
When an exception is detected, it is thrown (using a
throw
expression) to the exception handler.
- A catch clause is code that is executed when an exception of a given type
is raised. The definition of an exception handler begins with the keyword
catch.
- An abstract base class is a class from which no objects may be created;
it is only used as a base class for the derivation of other classes. A class is
abstract if it includes at least one member function that is declared as pure virtual.
- An iterator
is an object which, when invoked, returns the next object from a collection of objects.
- The scope of a name refers to the context in which it is visible.
[Context, here, means the functions or blocks in which a given variable name can
be used.]
- A compilation unit
is the source code (after preprocessing) that is submitted to a compiler for compilation
(including syntax checking).