![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
korian |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
В зависимости от ситуации. Есть в c++11 std::unique_ptr (заменители: std::auto_ptr, boost:scoped_ptr) есть std::shared_ptr/std::weak_ptr (boost::shared_ptr/boost::weak_ptr) для массивов - std::vector |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Вложенный класс имеет доступ к private полям и методам внешнего (но нужен указатель на внешний класс), поэтому friend не нужен.
|
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
это то понятно.
|
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Это с зависимости от того чего хотят добиться. Если хотят иметь копию объекта класса CMyDlg тогда пишется CMyDlg m_dlg; если же хотят чтобы CMyTask хранил ссылку на созданный ранее или разделяемый объект, то пишут CMyDlg &m_dlg;
Зачем же мне городить огород с поздним связыванием? С виртуальными функциями, абстрактными интерфейсами и т.д. когда я могу связать все статически? Мало что это раздувает код, так оно еще делает его тормозным. При желании я вообще могу сделать ExecuteSubtask инлайном и получить максимальное быстродействие. Компилятор С++ умеет эффективно оптимизировать статичные связки. Например, он может легко выкинуть реализацию неиспользуемой простой функции, тогда как виртуальная всегда попадает в исполняемый файл. Это сколько нужно делать лишних движений, чтобы заменить один модификатор friend в том случае когда он находиться на своем месте. Вопрос ЗАЧЕМ ЭТО ДЕЛАТЬ? Функция должна быть паблик, если ее может вызвать из любой другой функции которая имеет доступ к объекту. В моем случае класс-хелпер (делегат) реализует внутреннюю логику, поэтому ему нужен доступ закрытым полям и функциям. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
ну тут написано http://ru.wikipedia.org/wiki/%D0%A1%D1%81%...0_%28C%2B%2B%29
или когда мы объявляем в классе, то можно? |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Так мы ее инициализируем в объявлении. Только не в объявлении поля (синтаксис С++ запрещает инициализировать поля при описании), а при объявлении класса в конструкторе. Не может получиться такого, что объект создан а ссылка не инициализирована.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |