конструктор symbian C ++ - PullRequest
       4

конструктор symbian C ++

1 голос
/ 22 февраля 2011

как работает приватный конструктор в Symbian C ++ ??

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Если я правильно помню, в Symbian C ++ не было поддержки для правильной обработки исключений, и создание объекта основывалось на двухэтапном процессе инициализации - конструктор не может генерировать, поэтому существует простой конструктор без выброса, а затем шаг инициализации.Одна из проблем, связанных с двухфазной инициализацией, заключается в том, что она возлагает бремя выполнения построения и инициализации (два отдельных шага) на пользовательский код, и это подвержено ошибкам, о чем вы должны помнить при создании каждого объекта.

Чтобы облегчить эту нагрузку, дизайн зависел от статических функций, таких как NewL, NewLC (я не помню, было ли их больше).В этой среде наличие частного конструктора запрещает пользовательскому коду создавать объекты типа без выполнения двухфазной инициализации и заставляет их использовать предоставленный механизм NewXXX.Эти функции, будучи частью класса, имеют доступ к закрытому конструктору и создают экземпляр объекта, а затем выполняют любую инициализацию.

0 голосов
/ 22 февраля 2011

Мне неизвестны какие-либо причины для частных конструкторов, характерных для Symbian C ++, но в любом коде C ++ есть применения, в зависимости от представляемой функциональности и средств защиты от случайного неправильного использования.Вас может заинтересовать обсуждение на http://discussion.forum.nokia.com/forum/showthread.php?215249-Constructor-in-symbian-c

...