This is well explained in the section from which this quote is taken. I will not rephrase it in its entirety, but here is a brief overview of the contents of the section.
, : implicitly-declared, implicitly-defined, trivial, non-trivial synthesized (, , ).
implicitly-declared , user-declared. , struct T { }; , . , struct T { T(int); }; , . T , .
implicitly-declared - implicitly-defined, , .. . struct T { };, T t; T::T(). , , . - ! ( , - ) .
implicitly-declared trivial, :
, . ,
struct Trivial
{
int i;
char * pc;
};
int main()
{
Trivial t;
}
T ( , : T).
, , , implicitly-declared non-trivial, , , , , synthesize , .
, :
struct NonTrivial
{
virtual void foo();
};
-, ( , , ).
,
struct NonTrivial
{
std::string s;
};
, trivial. . , , NonTrivial n; ( , ).
, . , , ( , , , ). - . ( ), , , , .
N.B.
Stanley B Lippman " ++", () ++, . , : , . ++ , , - " /" ( / , (, )).