|
Программирование >> Перегруженные имена функций и идентификаторы
Продолжаем ехать влево, но тут ( . Идём вправо: int (*(*(*fun)())[3])(); получаем fptr есть указатель на функцию, возвращающую... Снова ) , опять влево. Получаем: int (*(*(*fun)())[3])(); fptr есть указатель на функцию, возвращающую указатель на... Слева опять ( , идём вправо. Получаем: int (*(*(*fun)())[3])(); fptr есть указатель на функцию, возвращающую указатель на массив из трёх... И снова справа ) , отправляемся влево. Получаем: int (*(*(*fun)())[3])(); fptr есть указатель на функцию, возвращающую указатель на массив из трёх указателей на... Снова разворот вправо по причине ( . Получаем: int (*(*(*fun)())[3])(); fptr есть указатель на функцию, возвращающую указатель на массив из трёх указателей на функции, возвращающие... Тут конец описания, поехали влево и получили окончательную расшифровку: int (*(*(*fun)())[3])(); fptr есть указатель на функцию, возвращающую указатель на массив из трёх указателей на функции, возвращающие int . Именно то, чего мы хотели. STLport 4.0 В июле 2000 года наконец-то вышла новая версия библиотеки STLport 4.0. Для тех, кто еще не в курсе, что это такое, объясним: это свободно распространяемая реализация стандартной библиотеки шаблонов для множества различных компиляторов и операционных систем. Помимо всего прочего, STLport доступен не только для современных компиляторов, более или менее удовлетворяющих стандарту языка, но и для некоторых стар1х компиляторов, в частности Borland C++ 5.02 или MS Visual C++ 4.0. Четвертая версия STLport отличается от пред1дущей главным образом тем, что теперь в нее входит полная поддержка потоков (ранее приходилось использовать потоки из библиотеки, поставляемой с конкретным компилятором). Реализация потоков взята из SGI (как, впрочем, и весь STLport). Вообще, STLport начал развиваться как попытка перенести известную библиотеку SGI STL на gcc и sun cc. Таким образом, с выходом четвертой версии, STLport стал полноценной библиотекой, соответствующей стандарту языка, во всяком случае, у него появились претензии на это. Понятно, что применение одной и той же библиотеки на разных платформах, это уже большой плюс - потому что никогда точно заранее не известно, что, где и как будет плохо себя вести. Можно только лишь гарантировать, что программа, при переносе с одного компилятора на другой, все-таки будет себя плохо вести даже в том случае, если скомпилируется. Использование одной библиотеки шаблонов очень сильно увеличивает шансы на то, что не будет проблем тогда, когда программист увидит отсутствие в STL нового компилятора какого-нибудь контейнера. К примеру, в g++-stl-3 нет std::wstring. То есть, шаблон std::basic string есть, и std::string является его инстанционированием на char, но попытка подставить туда же wchar t ни к чему хорошему не приведет (в частности, из-за того, что в методе c str() есть исключительная строчка вида return ). Но и кроме единых исходных текстов у STLport есть еще несколько интересных возможностей и особенностей. Во-первых, это debug mode, при котором проверяются все условия, которые только возможны. В частности, в этом режиме при попытке работать с неинициализированным итератором будет выдано соответствующее ругательство. Согласитесь, это удобно. Во-вторых, в STLport есть несколько нестандартных контейнеров, таких как hash map, например. Зачем? Ну, в силу того что стандартный map как правило реализован на сбалансированных деревьях поиска (как более общий способ обеспечения быстрого поиска при разнородных данных), и что делать в том случае, когда все-таки известна хорошая хеш-функция для определенных элементов, не особенно понятно (ну, за исключением того, чтобы написать подобный контейнер самостоятельно). В третьих, поддержка многопоточности. То есть, STLport можно безопасно использовать в программах, у которых более одного потока выполнения. Это досталось STLport еще от SGI STL, в которой очень много внимания уделялось именно безопасности использования. Помимо того, если вдруг возникли какие-то проблемы с STL, то можно попытаться взять STLport - быть может, проблем станет поменьше. Новый язык программирования от Microsoft: C# Фирма Microsoft создала новый язык программирования, сделанный на основе Си и C++ и Java, который она назвала C# (C sharp). Чтобы реально посмотреть язык программирования, возьмем программу Hello, world! из C# Language Reference: using System; class Hello { static void Main() { Console.WriteLine( Hello, world ); Это очень сильно напоминает Java. Таким образом, что имеется в наличии: Убрали селектор ->, впрочем это, возможно и правильно: и точка и стрелка выполняют, в принципе, одни и те же функции с точки зрения ООП, так что в этом есть намеки на концептуальность. В принципе, это стало вероятным благодаря тому, что в C# есть типы значения (такие как, int, char, структуры и перечисления) и типы ссылки , которыми являются объекты классов, массивы. Точно так же, как и в Java, перенесли метод main внутрь класса. Точно так же, как и в Java, в программах на C# теперь нет необходимости в декларациях без дефиниций, т.е. компилятор многопроходный.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |