SHANDLE
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: class vector { int* m_pVector; int m_nSize; static int s_nObjects; // Constructor public: vector(); vector(int nSize); vector(const vector &vector); // Destructor public: ~vector(); // Attributes public: static int ObjectCount(); int Size() const; // Operation public: vector& operator=(const vector &r); bool GetAt(int nIndex, int &nValue) const; bool SetAt(int nIndex, int nValue); void Display() const; }; int vector::s_nObjects = 0; vector::vector() : m_pVector(NULL) , m_nSize(0) { s_nObjects++; cout << "vector::vector()\n"; } vector::vector(int nSize) : m_pVector(NULL) , m_nSize(nSize) { m_pVector = new int [nSize]; s_nObjects++; cout << "vector::vector(" << nSize << ")\n"; } vector::vector(const vector &r) : m_pVector(NULL) , m_nSize(r.m_nSize) { m_pVector = new int [m_nSize]; for (int i = 0; i < m_nSize; i++) { m_pVector[i] = r.m_pVector[i]; } s_nObjects++; cout << "vector::vector(const vector &r)\n"; } vector::~vector() { if (m_pVector) { delete [] m_pVector; } s_nObjects--; cout << "vector::~vector()\n"; } int vector::ObjectCount() { return s_nObjects; } int vector::Size() const { return m_nSize; } vector& vector::operator=(const vector &r) { cout << "vector& vector::operator=(const vector &r)\n"; if (m_pVector) { delete [] m_pVector; m_pVector = NULL; } m_pVector = new int [r.m_nSize]; m_nSize = r.m_nSize; for (int i = 0; i < m_nSize; i++) { m_pVector[i] = r.m_pVector[i]; } return *this; } bool vector::GetAt(int nIndex, int &nValue) const { if (m_pVector && nIndex >= 0 && nIndex < m_nSize) { nValue = m_pVector[nIndex]; return true; } return false; } bool vector::SetAt(int nIndex, int nValue) { if (m_pVector && nIndex >= 0 && nIndex < m_nSize) { m_pVector[nIndex] = nValue; return true; } return false; } void vector::Display() const { cout << "class vector\n"; cout << "Size: " << m_nSize << "\n"; for (int i = 0;i < m_nSize; i++) { cout << "element[" << i<< "] = " << m_pVector[i] << "\n"; } } int main() { // По умолчанию vector f1; f1.Display(); // С параметром vector f2(10); f2.Display(); for (int i = 0, n = f2.Size(); i < n; i++) { f2.SetAt(i, i); } f2.Display(); // снова с параметром vector *pf3 = new vector(2); pf3->Display(); // копирующий vector f4(*pf3); f4.Display(); // копирующий vector z1(f2); z1.Display(); // по умолчанию vector z2; z2.Display(); // опрератор присваивания z2 = z1; z2.Display(); cout << "Quantity of vectors: " << vector::ObjectCount() << "\n"; delete pf3; return 0; } | | Всего записей: 928 | Зарегистр. 19-01-2007 | Отправлено: 14:43 11-10-2008 | Исправлено: SHANDLE, 14:56 11-10-2008 |
|