Lets assume I have a program:

```
class A {
public:
    A() { cout << '1'; }
    A(int i) { cout << '2'; }
};

int main() {
    A a;
    a = 0;

    return 0;
}

```

Result of this program will be 12.
So my question is - why am I able to call the second constructor through a = 0, when I already created the object and called the first constructor. I don't understand the whole concept of this. Isn't a constructor supposed to be called only once (during object creation)?