Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перегрузка конструктора

23K
20 июля 2009 года
Spice
37 / / 10.07.2008
Извеняюсь за откровенно ламерский вопрос, но никак не могу воткнуть в суть.
Код:
#include <stdlib.h>
using namespace std;

class Point
{
public:
    Point();
    Point(float dX, float dY);

    float dX;
    float dY;
};

Point::Point()
{
    Point::Point(0, 0);
}

Point::Point(float dX, float dY)
{
    this->dX = dX;
    this->dY = dY;
}

void main()
{
    Point point1;

    point1 = Point(10, 10);
    printf("&point1 = %x; x=%f, y=%f \n", &point1, point1.dX, point1.dY);
   
    point1 = Point();
    printf("&point1 = %x; x=%f, y=%f \n", &point1, point1.dX, point1.dY);

    getchar();

    return;
}

Почему при вызове перегруженного конструктора без параметров поля экземпляра класса содержат значения типа -107374176.000000. Мусор из оперативки, я полагаю. Но почему они не иницилизируются??
23K
20 июля 2009 года
Spice
37 / / 10.07.2008
Вопрос снят.

Point::Point() : dX(0),dY(0)
{
}
87
20 июля 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Spice
Вопрос снят.



Ну, не совсем снят, ибо было показано, как надо делать, но не объяснено, почему не работало. А не работало, потому, что в конструкторе по умолчанию единственное, что мы сделали - создали и удалили какой-то левый объект класса Point.

Быдлокодер, достигший дзена, решил бы эту задачу так:

 
Код:
Point::Point()
{
    *this = Point(0, 0);
}


// Вчера сильно перегрелся на солнышке - могу врать
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог