Тут не учтена одна тонкость: проверка на корректное выделение памяти.
А если пренебречь, вполнене читабельно.
P.S. Не забудь деструктор
В искустве летать есть один маленький секрет. Секрет этот в том,чтобы бросить себя изо всех сил на землю — и не попасть. Выберете погожий денек и попробуйте сами.
new и memset принимают тип size_t, а не int. Если будет передано отрицательное число,
класс будет работать не так, как ожидалось. Не помешала бы проверка на диапазон допустимых значений.
BN>Здравствуйте, Аноним, Вы писали:
BN>Тут не учтена одна тонкость: проверка на корректное выделение памяти. BN>А если пренебречь, вполнене читабельно.
BN>P.S. Не забудь деструктор
Здравствуйте, <Аноним>, Вы писали:
А>Добрый день.
А>Хотелбы спросить на сколько безобразна такая строка?
А> TArray(int sz): pArray(new int [sz]),iSz(sz){};
Здравствуйте, OlegSv2, Вы писали:
OS>Здравствуйте, <Аноним>, Вы писали:
А>>Добрый день.
А>>Хотелбы спросить на сколько безобразна такая строка?
А>> TArray(int sz): pArray(new int [sz]),iSz(sz){};
OS>лучше explicit TArray...
Здравствуйте, Bell, Вы писали:
А>>>Хотелбы спросить на сколько безобразна такая строка?
А>>> TArray(int sz): pArray(new int [sz]),iSz(sz){};
OS>>лучше explicit TArray...
B>А чем дучше?
Конструктор с одним параметром работает как преобразование типа.
Так будут работать, что вряд ли подразумевалось:
Здравствуйте, Аноним, Вы писали:
А>>Хотелбы спросить на сколько безобразна такая строка?
Если делать именно такой класс (и забыть, что new теоретически может обломаться), то та строка имхо вплне нормальна. Да вот только... (См. ниже)
А>Если массив не динамический (в ходе работы не меняет размер), то красивше былобы так:
<Скип>
А>кстати можно и не "завязываться" на int а сделать шаблон
А>
А>template <class Type, int iSize> class TArray
А>{
А>public:
А> TArray(): iSz(iSize){};
А>protected:
А> int iSz;
А> Type mArray[iSize];
А>};
А>
Во-первых, при таком раскладе я бы сделал хотя бы так:
template <class Type, int iSize> class TArray
{
public:
TArray(){};
protected:
static const int iSz = iSize;
Type mArray[iSize];
};
Зачем увеличивать sizeof() на лишний int, да еще при инициализации лишнюю операцию делать... А если размер динамический, то есть std::vector<>... Впрочем, он и так есть... :-)