Здравствуйте, уважаемое сообщество. Столкнулся с ситуацией, требующей Вашего пояснения.
Имеется примитивный класс Vector, в котором реализованы все нужные для проекта операции/методы (по условию проекта использовать std::vector запрещено).
Ниже представлена часть класса:
class Vector {
private:
double *mem;
int count;
public:
Vector();
explicit Vector(int count);
Vector(int count, double filler);
Vector(const Vector& vec);
~Vector();
................
}
Имеется класс Matrix, часть представлена ниже:
class Matrix {
private:
int rowsNum;
int columnsNum;
Vector *rows;
public:
Matrix();
Matrix(int rowsNum, int columnsNum);
Matrix(int rowsNum, int columnsNum, double filler);
Matrix(const Matrix& matr);
~Matrix();
...............
}
Конструктор-инициализатор, принимающий два параметра, реализован следующим образом:
Matrix::Matrix(int rowsNum, int columnsNum)
{
this->rowsNum = rowsNum;
this->columnsNum = columnsNum;
rows = new Vector[rowsNum];
for (int i = 0; i < rowsNum; i++)
rows[i] = Vector(columnsNum);
}
Собственно, интересует следующая строка кода:
rows[i] = Vector(columnsNum);
Дело в том, что все вышеописанное отрабатывает прекрасно без каких бы то ни было ошибок. Меня интересует вопрос, можно ли так вообще делать. Разумеется, можно написать метод класса Vector, работа которого была бы аналогичной тому, что делает конструктор этого класса. Но, опять же, если вышеприведенный код полностью "легален", то в этом нет никакой необходимости.
Хотелось бы услышать Ваши комментарии по этому поводу.
P.S. Операция присваивания векторов в классе Vector перегружена.
Ну, скажем так, я бы добавил перемещающее присваивание для пущей эффективности, только и всего. Ну, может, переписал бы так:
Matrix::Matrix(int rowsNum, int columnsNum)
:rowsNum(rowsNum),columnsNum(columnsNum),
rows(new Vector[rowsNum])
{
for (int i = 0; i < rowsNum; i++)
rows[i] = Vector(columnsNum);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно замерить время работы программы, используются объекты класса
Задача: Генерирование всех k-элементных подмножеств множества {1,
Давая ответ на заданный кодом вопрос пользователь не должен беспокоиться о регистре
Ребята как можно с помощью FormData отправить одним запросом несколько input type file причем с разными name