Junior — Senior
When are the copy constructor and assignment operator called
livecode
Task condition
In the CopyAssignExample structure, both a user-defined copy constructor and a copy assignment operator are implemented. It is necessary to determine in which cases each of them will be invoked.
struct CopyAssignExample {
CopyAssignExample(const CopyAssignExample& other) {
x = other.x;
y = other.y;
z = other.z;
}
CopyAssignExample& operator=(const CopyAssignExample& other) {
x = other.x;
y = other.y;
z = other.z;
return *this;
}
int x;
int y;
int z;
};
void SomeFunc() {
// place examples here demonstrating calls to the copy constructor and the assignment operator
}
Usage example:
CopyAssignExample a; // default constructor
CopyAssignExample b = a; // copy constructor is called
CopyAssignExample c; // default constructor
c = b; // copy assignment operator is called
Describe which code constructs lead to the invocation of each method.