Выводится мусор в функции

Есть перегруженный переменными double конструктор CCoord, также есть функция f_Print(), которая служит для вывода в терминал в функции main. Проблема: выводится мусор.

class CCoord {
public:
double x, y, h, x2, y2, h2;
public:
CCoord(double x, double y, double h, double x2, double y2, double h2){  // Конструктор задает 2 пеленгатора 
    x = x;
    y = y;
    h = h;
    x2 = x2;
    y2 = y2; 
    h2 = h2;
}
void f_Print() { 
    cout << "x: " << x << endl;
    cout << "y: " << y << endl;
    cout << "h: " << h << endl;
    cout << "x2: " << x2 << endl;
    cout << "y2: " << y2 << endl;
    cout << "h2: " << h2 << endl;
}

Ответы (1 шт):

Автор решения: Harry

Этот фокус — с одинаковыми именами — работает при инициализации, т.е.

CCoord(double x, double y, double h, double x2, double y2, double h2)
{ 
    x = x;
    y = y;
    h = h;
    x2 = x2;
    y2 = y2; 
    h2 = h2;
}

полная ерунда (присвоение аргументов самим себе), а

CCoord(double x, double y, double h, double x2, double y2, double h2)
:x(x), y(y), h(h), x2(x2), y2(y2), h2(h2) {}

вполне корректный вызов, где члены класса инициализируются переданными в конструктор параметрами.

→ Ссылка