Я довольно новыми для C++, написал пример кода:Должен ли T() инициализировать переменные-члены до нуля?
#include <iostream>
class Point
{
public:
int X, Y;
int dis()
{
std::cout << X << Y << std::endl;
return X;
}
int operator=(const Point&)
{
int dat = 3;
return dat;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Point p2 = Point();
p2.dis();
return 0;
}
Здесь p2
должны инициализировать оба класса Point
переменные x
и y
к нулю правильно? Но вместо этого, когда я делаю p2.dis()
, я получаю x
и y
, проиндексированные на случайные значения.
и в следующем случае tSum = 0, даже если «T» имеет тип класса.
template<typename T>
double GetAverage(T tArray[], int nElements)
{
T tSum = T(); // tSum = 0
for (int nIndex = 0; nIndex < nElements; ++nIndex)
{
tSum += tArray[nIndex];
}
// Whatever type of T is, convert to double
return double(tSum)/nElements;
}
как это отличается?
Заранее благодарим за разъяснения.
Где находятся шаблоны? Вы никогда не используете 'Item'. Как указано, код должен работать, как вы его описываете. –
Вы можете использовать ** в инициализаторах класса **, чтобы сделать ваш код более удобочитаемым. Затем, если значение не та, которую вы установили, вам нужно будет только искать место, где значения по умолчанию переопределены. –
У VC++ есть некоторые ошибки, связанные с инициализацией значений. –