Open In App
Related Articles

Trivial classes in C++

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
When a class or struct in C++ has compiler-provided or explicitly defaulted special member functions, then it is a trivial type. It occupies a contiguous memory area. It can have members with different access specifiers. Trivial types have a trivial default constructor, trivial copy constructor, trivial copy assignment operator and trivial destructor. In each case, trivial means the constructor/ operator/ destructor is not user-provided and belongs to a class that has :
  • No virtual functions or virtual base classes,
  • No base classes with a corresponding non-trivial constructor/operator/destructor
  • No data members of class type with a corresponding non-trivial constructor/operator/destructor
The following examples show trivial types :
/*Since there are no explicit constructors,
there exists a default constructor*/
struct Trivial {
    int i;
  
private:
    int j;
};
  
/* In Trivial2 structure, the presence of the 
   Trivial2(int a, int b) constructor requires
   that you provide a default constructor. For 
   the type to qualify as trivial, we must  
   explicitly default that constructor.*/
struct Trivial2 {
    int i;
    Trivial2(int a, int b)
    {
        i = a;
    }
    Trivial2() = default;
};

                    
Reference : https://msdn.microsoft.com/en-us/library/mt767760.aspx

Last Updated : 08 Aug, 2017
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads