Semantics basically means "the meaning of".
It may help to look at a more familiar case to explain the term.
Consider:
int a = 3;
int b = 5;
int c = a + b;
The value of a + b
is 8
because the semantics of the +
operator is to take the numerical sum of its operands.
Now consider this:
std::string a = "hello";
std::string b = "world";
std::string c = a + b;
The value of a + b
is "helloworld"
because the semantics of the +
operator is to concatenate its operands.
The +
operator, when used with std::string
is said to have different semantics from when it is used with numerical types.
It has a different meaning.
Now consider copy and move semantics:
std::string a = "hello";
std::string b;
b = a; // b receives a copy of a's value
b = std::string("hello"); // the temporary value is moved into b
We have the same operator =
which has a different meaning in different situations. Again we say is has different semantics.
The first case has copy semantics and the second case has move semantics.