Содержание
- 2. Интерфейс класса Есть два вида определяющих операций класса, задающих его интерфейс: функции-члены класса (методы) функции-друзья класса
- 3. Ключевое слово friend Объявляются в одном или нескольких классах Всегда открыты, т.к. это обычные функции Имеют
- 4. Объявление друзей const int max_string_length = 128; class String { public: void set_to( char* ); int
- 5. Программирование друзей #include “mystring.h” #include // для стандартных строковых функций #include #include // для exit() String
- 6. String concat (String* s1, char* s2 ) { if( s1->length() + strlen(s2) > max_string_length ) {
- 7. #include “mystring.h” void main( int, char** ) { String firstname, lastname, name, output ; firstname.set_to (
- 8. Друзья нескольких классов При одновременной разработке двух (или более) близких по предметной области классов функции-друзья обеспечивают
- 9. Умножение матрицы на вектор class Matrix; // опережающее описание типа class Vector { public: friend Vector
- 10. Умножение матрицы на вектор #include “vec_matr.h” Vector mult( Matrix* m, Vector* v ) { Vector r
- 11. Члены одного класса – друзья другого class Vector; // опережающее описание типа class Matrix { public:
- 12. Умножение матрицы на вектор #include “vec_mat2.h” Vector Matrix::mult( Vector* v ) { Vector r ; int
- 13. «Дружба» классов class Vector; // опережающее описание типа class Matrix { public: Vector mult ( Vector*
- 14. Дружбы можно избежать при достаточном развитии интерфейса класса class Vector { public: void set_elem( int ,
- 15. Методы void Matrix::set_elem( int i, int j, float val ) { elements[i][j] = val ; }
- 16. Умножение матрицы на вектор #include “vec_mat3.h” Vector mult( Matrix* m , Vector* v ) { Vector
- 17. inline-функции Общее с макросами код не вызывается, а подставляется определяются в h-файлах, а не в cpp-файлах
- 18. Методы, подставляемые inline class Matrix { private: float elements [ 3 ] [ 3 ]; public:
- 19. Методы, подставляемые inline class Matrix { public: void set_elem( int , int , float ) ;
- 20. РЕЗЮМЕ Функции-друзья – это обычные функции Развитый интерфейс класса позволяет обойтись без функций-друзей Функции-друзья приходится использовать
- 21. Упражнение Измените в классе String методы is_the_same_as и is_different_from, сделав их друзьями. Добавьте все варианты. Прототипы
- 23. Скачать презентацию