jeudi 7 juin 2018

Parameterized constructor for assignment

I've noticed some behaviour which I can't understand in parameterized constructors. Given the following program:

#include <iostream>
using namespace std;

class A {
public:
    int x;

    A() {}

    A(int i) : x(i){
        cout << "A\n";
    }
    ~A(){
        cout << "dA\n";
    }

};

int main(){
    A p;
    p = 3;
    cout << p.x << endl;
    p = 5;
    cout << p.x << endl;
    return 0;
}

I get as output:

A
dA
3
A
dA
5
dA

This means that using = triggers the parameterized constructor, destroys the object on which it's called and creates a new object. I cannot understand this behaviour and I can't find the answer in the standard ( I am sure it is there somewhere, but it may be stated in a sophisticated way). Could someone help me with an explanation?

Aucun commentaire:

Enregistrer un commentaire