semantics

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.