Здравствуйте, <Аноним>, Вы писали:
А>Если есть массив в классе
А>class asd А>{
А>private: А> unsigned char a[20]; А>}; А>то будет ли он забит нулями при конструировании обьекта, или ручками обнулять надо ?
Если немножко изменить код класса, то всё будет в шоколаде:
class asd
{
public:
asd()
{
for(int i = 0; i < 20; i++)
a[i] = 0;
}
private:
unsigned char a[20];
};
После создания объекта массив будет состоять из нулей.
Здравствуйте, Аноним, Вы писали:
А>Если есть массив в классе
А>class asd А>{
А>private: А> unsigned char a[20]; А>}; А>то будет ли он забит нулями при конструировании обьекта, или ручками обнулять надо ?
А ежели вот так сделаешь, то само обнуляться будет:
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, IT, Вы писали:
AD>Настоящие C++-шники делают так: AD>
AD>std::fill(a, a+sizeof(a)/sizeof(a[0]), 0);
AD>
AD>
не согласен,
memset в том же наипопулярнейшем VC7.1 компилится в инлайноыую ассемблерную оптимизированную вставку, а этот fill как угодно реализован может быть, напр. как в первом ответе.
X>А если компилятор некомплиантный и не обнуляет POD типы при явном вызове конструктора?
конструктор вектора, по идее, явно заполняет указанным значением (здесь — char() )
но дело даже не в этом, а в том, что вектор предполагает ДИНАМИЧЕСКОЕ выделение памяти, так что, не мороча голову и не заставляя несчастный проц потеть выбираем тривиальный вариант с memset.
Здравствуйте, vdimas, Вы писали:
V>не согласен, V>memset в том же наипопулярнейшем VC7.1 компилится в инлайноыую ассемблерную оптимизированную вставку, а этот fill как угодно реализован может быть, напр. как в первом ответе.
Кстати, да
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Аноним, Вы писали:
А>Если есть массив в классе
А>class asd А>{
А>private: А> unsigned char a[20]; А>}; А>то будет ли он забит нулями при конструировании обьекта, или ручками обнулять надо ?
v> memset в том же наипопулярнейшем VC7.1 компилится в инлайноыую v> ассемблерную оптимизированную вставку, а этот fill как угодно v> реализован может быть
В STLport выливается в ту же самую ассемблерную вставку.
v> напр. как в первом ответе.
И еще очень большой вопрос, что окажется быстрее для маленьких N.
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен