Take for example two classes `A` and `B` where `B` is derived from `A`. If I implement a method using `A` such as:

```
void sum(A &val)
{
   //do stuff
}

```

Then if I call `sum()` using an object of type `B` like so:

```
B b;
sum(b);

```

Does this create a temporary copy of `b`? Thank you!