Greetings All;
Мне нужно разработать библиотеку классов C ++, содержащую набор численных методов для научных вычислений.В библиотеке должен быть реализован класс Vector (с использованием указателей) с некоторыми базовыми функциями, указанными в заголовочном файле "Vector.h".
#ifndef VECTOR_H
#define VECTOR_H
template <class T>
class CVector {
private:
int nn; //size of array
T *v; //pointer to array of data
public:
//Default constractor
CVector();
//zero based array
CVector(int n);
//initialize to constant of value a
CVector(int n, const T &a);
//initialize to array a
CVector(int n, const T *a);
//copy constractor
CVector(const CVector &rhs);
//assignment
CVector & operator=(const CVector &rhs);
//i'th element
inline T & operator[](const int i);
inline const T & operator[](const int i) const;
inline int size() const;
//resize (contents not preserved)
void resize(int newn);
//resize and assign a constant value
void assign(int newn, const T &a);
//deconstractor
~CVector();
};
#endif /* VECTOR_H */
Я новичок в C ++, и у меня возникли некоторые затруднения с пониманием некоторых конструкторов ифункции в приведенном выше коде.
Мои вопросы:
1- Какова концепция следующего конструктора?
//initialize to array a
CVector(int n, const T *a);
Я имею в виду, как инициализировать вектор длямассив a?
2- Чем отличается конструктор копирования от конструктора присваивания?
//copy constractor
CVector(const CVector &rhs);
//assignment
CVector & operator=(const CVector &rhs);
3- Я знаю, что эта функция возвращает i-й элемент вектора:
//i'th element
inline T & operator[](const int i);
но в чем разница между ним и этим:
inline const T & operator[](const int i) const;
Мне нужно понять концепцию, чтобы знать, как реализовать их в файле .cpp икак их называть у меня в главном.Я буду рад, если вы мне поможете.
С уважением;