Содержание
- 2. Рассмотрим пример class A { int x, y; public: A(int xx = 0){ x = y
- 3. class B{ // агрегированный класс A a; // объект класса A int z; public: B(){ z
- 4. Конструктор класса B Определяется он так: B(int b, int c, int d) : a(b, c), z(d)
- 5. Конструкторы по умолчанию Заметим, что если в классе A есть конструктор по умолчанию, то он будет
- 6. Порядок работы конструкторов при объявлении объекта класса B: сначала в A, затем в B.
- 7. Агрегирование по указателю Несколько сложнее выглядит конструктор агрегированного класса, если член-данное в нем - указатель на
- 8. Рассмотрим на примере, как в этом случае можно определить конструктор агрегированного класса.
- 9. Пусть имеется класс Array – числовой массив. class Array { int *a, n; public: Array(int nn
- 10. class Matrix class Matrix { Array *b; int m, n; public: Matrix(int m1 = 1, int
- 11. Конструктор Matrix :: Matrix(int m1, int n1, int t) { b = new Array[ m =
- 12. Конструктор b = new Array[ m = m1]; n = n1; for ( int i =
- 13. Пример использования void main() { Matrix c(4, 5,1); c.Show(); c[1][1] =100; /* Работают две перегруженные операции
- 14. Задача Сдвинуть строки матрицы вверх на одну циклически. void main() { Matrix M(5,6,1); Array b; M.Show();
- 15. Задача Matrix M(5,6,1); Array b; b = M[0]; for ( int i =1; i M[i-1] =
- 16. Пример решения этой задачи со «сдвигом» адресов строк int *& Array::Geta(){ return a;} void Matrix::operator !()
- 17. void Matrix:: operator !(*this); } void main() { Matrix M(5,6,1); cout M cout }
- 18. Вернемся к классам A и B Разберемся, как в классе B можно использовать член-данные х и
- 19. Способы выхода из положения Использовать a.x и a.y непосредственно в член-функциях класса B станет возможным, если
- 20. 3. В некоторых случаях приходится специально задавать функции, которые возвращают то или иное значение из части
- 21. Функция Print() в классе B в этом случае может быть определена таким образом void B ::
- 22. Пример использования агрегированных классов void main() { A a1, a2(7,8); // работают оба конструктора класса A
- 23. Графический пример агрегированного класса Определим 3 класса: Bar – прямоугольник, Circ – круг, CircOnBar – круг
- 24. class Bar { int h, w, x, y; public: Bar(int hh, int ww, int xx, int
- 25. void __fastcall TForm1::Button1Click(TObject *Sender) { try{ Bar b(50, 30, 10, 10); b.Show(clGreen, Image1); Bar c(100,100,Image1->Width/2-50,Image1->Height/2-50); c.Show(clRed,
- 26. class Circ { int r, x, y; public: Circ(int rr, int xx, int yy) {r =
- 27. void __fastcall TForm1::Button3Click(TObject *Sender) { Circ c(50, Image1->Width/2, Image1->Height/2); c.Show(clFuchsia, Image1); }
- 28. Агрегированный класс class CircOnBar{ Bar b; Circ c; public: CircOnBar(int h, int w, int x, int
- 29. void __fastcall TForm1::Button4Click(TObject *Sender) { CircOnBar cb(150, 100, Image1->Width/2-50, Image1->Height/2 - 75, 50); cb.Show(clRed, clAqua, Image1);
- 30. void __fastcall TForm1::Button5Click(TObject *Sender) { int x = 20, dx = Image1->Width/5, i; // Определяем массив
- 32. Скачать презентацию