Special Member Functions

Special member functions in C++ are functions which the compiler will automatically generate if they are used, but not declared explicitly by the programmer. The special member functions are:

  • Default constructor (if no other constructor is explicitly declared)
  • Copy constructor if no move constructor or move assignment operator is explicitly declared.
If a destructor is declared generation of a copy constructor is deprecated.
  • Move constructor if no copy constructor, move assignment operator or destructor is explicitly declared.
  • Copy assignment operator if no move constructor or move assignment operator is explicitly declared.
If a destructor is declared generation of a copy assignment operator is deprecated.
  • Move assignment operator if no copy constructor, copy assignment operator or destructor is explicitly declared.
  • Destructor

In these cases the compiler generated versions of these functions perform a memberwise operation. For example the compiler generated destructor will destroy each sub-object (base class or member) of the object.

The compiler generated functions will be public, non-virtual and the copy constructor and assignment operators will receive const& parameters (and not be of the alternative legal forms).

Read more about Special Member Functions:  Example, Signatures, C++98

Famous quotes containing the words special, member and/or functions:

    O my Brothers! love your Country. Our Country is our home, the home which God has given us, placing therein a numerous family which we love and are loved by, and with which we have a more intimate and quicker communion of feeling and thought than with others; a family which by its concentration upon a given spot, and by the homogeneous nature of its elements, is destined for a special kind of activity.
    Giuseppe Mazzini (1805–1872)

    If one member suffers, all suffer together with it; if one member is honored, all rejoice together with it.
    Bible: New Testament, 1 Corinthians 12:26.

    When Western people train the mind, the focus is generally on the left hemisphere of the cortex, which is the portion of the brain that is concerned with words and numbers. We enhance the logical, bounded, linear functions of the mind. In the East, exercises of this sort are for the purpose of getting in tune with the unconscious—to get rid of boundaries, not to create them.
    Edward T. Hall (b. 1914)