#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. Мусор из оперативки, я полагаю. Но почему они не иницилизируются??
Point::Point() : dX(0),dY(0)
{
}
Цитата: Spice
Вопрос снят.
Ну, не совсем снят, ибо было показано, как надо делать, но не объяснено, почему не работало. А не работало, потому, что в конструкторе по умолчанию единственное, что мы сделали - создали и удалили какой-то левый объект класса Point.
Быдлокодер, достигший дзена, решил бы эту задачу так:
Код:
Point::Point()
{
*this = Point(0, 0);
}
{
*this = Point(0, 0);
}
// Вчера сильно перегрелся на солнышке - могу врать