Содержание
- 2. Приведение типа в С++ Не влияет на приводимый объект Генерируется временный анонимный объект требуемого типа и
- 3. Упрощенный пример Приведение типа обеспечивается генерацией компилятором кода, содержание которого соответствует следующему примеру Пример float fun(
- 4. Приведение к типу класса Обеспечивает конструктор с одним параметром Пример class complex { public: complex (
- 5. Приведение к типу String #include “mystring.h” #include int main (int , char*[ ] ) { String
- 6. Упрощение класса String const int max_string_length = 128; class String { public: String() ; String( const
- 7. Преобразование типа не происходит для вызывающего объекта #include “mystring.h” #include ind main (int , char*[ ]
- 8. Конструкторы и передача аргументов #include “mystring.h” String sentence(String words, char* punctuation = “.” ) ; void
- 9. Неоднозначности Правила разрешения ссылок точное соответствие типа аргументов тривиальные преобразования типа (type[]→type*, type→const type) или преобразования
- 10. Пример неоднозначности #include “mystring.h” class example { public: example( const char* ); // … } ;
- 11. Операция преобразования типа Проблема преобразования типа класса в другой тип Пример String s=“Пробная строка” ; strlen(s);
- 12. Пример Пример, как не надо String::operator char* ( ) { return text; } Опасно! String s
- 13. Пересмотренный класс String const int max_string_length = 128; class String { public: String() ; String( const
- 14. Еще раз о неоднозначностях #include “mystring.h” #include String operator– ( const String& , const String& );
- 15. Вместо преобразования типа Перегрузка операции преобразования типа требует большой осторожности включает для типа механизм неявных преобразований
- 16. Пример для класса String #include const int max_string_length = 128; class String { public: // …
- 17. Преобразование указателей и ссылок Преобразования типа объекта преобразует объект создает временный объект не может нарушить целостности
- 19. Скачать презентацию