Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 116 117 118 [ 119 ] 120 121 122 ... 210


Продолжаем ехать влево, но тут ( . Идём вправо:

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# теперь нет необходимости в декларациях без дефиниций, т.е. компилятор многопроходный.



1 ... 116 117 118 [ 119 ] 120 121 122 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика