Konwersja do typu definiowanego - C++

0

Mam taki prosty programik pokazujący działanie konwersji.

#include <iostream>
using namespace std;

struct Point {
    int x, y;
    Point(int x = 0, int y = 0) : x(x), y(y) { }
};

struct Segment {
    Point A, B;
    // explicit
    Segment(Point A = Point(), Point B = Point())
        : A(A), B(B)
    { }
};

void showPoint(Point A) {
    cout << "Point[" << A.x << "," << A.y << "]";
}

void showSegment(Segment AB) {
    cout << "Segment: ";
    showPoint(AB.A);
    cout << "--";
    showPoint(AB.B);
    cout << endl;
}

int main() {
    int k = 7;
    showPoint(k);

    cout << endl;

    Point A(1,1);
    showSegment(A);
    // showSegment(k);
} 

Jednak zastanawia mnie fakt, że w konstruktorze Segmentu na liście argumentów punkt ma następujący zapis Point A = Point().
Czy Point A = Point() nie jest równoważny z Point A ?

1

Czy Point A = Point() nie jest równoważny z Point A ?
Tutaj występuje inny kontekst - w przytoczonym przez Ciebie przykładzie Point A = Point() stanowi utworzenie parametru z domyślną wartością (równą utworzeniu instancji klasy Point), na takiej samej zasadzie, jak masz domyślny parametr x = 0 oraz y = 0 w konstruktorze klasy Point.

1 użytkowników online, w tym zalogowanych: 0, gości: 1