a. Можно, как и обычный локальный (статический или динамический) массив.
б. Только почленно меняя каждый элемент. Однако можно обнулить массив в списке инициализации: array().
Хорошо описано тут
Показаны сообщения с ярлыком инициализация. Показать все сообщения
Показаны сообщения с ярлыком инициализация. Показать все сообщения
вторник, 29 марта 2011 г.
среда, 2 марта 2011 г.
45. Какие конструкции С++ разрешается использовать в списке инициализации качестве инициализирующих выражений?
Что такое список инициализации? Инициализация членов класса путем явного вызова конструктора.
Встретил ответ, что используются lvalue, инициированные rvalue. Его нельзя счесть за правильный, разве что сделать кучу оговорок.
Поэтому, я считаю, правильный ответ: в качестве инициализирующих выражений используются явные вызовы конструкторов.
/* Класс реализующий комплексное число */
class Complex{
...
Complex(float re, float im);
...
};
class Test{
Complex a;
public:
Test():a(3,-2){}
};Встретил ответ, что используются lvalue, инициированные rvalue. Его нельзя счесть за правильный, разве что сделать кучу оговорок.
int a(1);
++a = 5;++a это lvalue, так как префиксная операция инкремента возвращает ссылку на объект. Но это не инициализация, и мы не сможем добавить ++a в список инициализации. Но если вы видите, что lvalue инициируется rvalue (int a(1)), то такое можно добавить в список. И можно ли сказать, что a(3,-2) это lvalue инициированное rvalue?Поэтому, я считаю, правильный ответ: в качестве инициализирующих выражений используются явные вызовы конструкторов.
Подписаться на:
Сообщения (Atom)