Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> почему трубуется static? 
:(
    Опции темы
korian
Дата 21.2.2013, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 3
Всего: 17



Цитата(NoviceF @  20.2.2013,  20:27 Найти цитируемый пост)
А можно тут небольшое пояснение? Как удалять объекты выделенные new? 

В зависимости от ситуации.
Есть в 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

PM   Вверх
math64
Дата 21.2.2013, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Вложенный класс имеет доступ к private полям и методам внешнего (но нужен указатель на внешний класс), поэтому friend не нужен.
PM   Вверх
mrgloom
Дата 21.2.2013, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



Цитата(Alexeis @  20.2.2013,  12:27 Найти цитируемый пост)
Это значит, что функция ожидает в качестве параметра ссылку на переменную. Ссылка это некоторое подобие указателя с той лишь разницей, что ссылка всегда указывает на реально существующую переменную. Ссылка это некоторый псевдоним переменной, поэтому при обращении к полям или функциям объекта синтаксис как у переменной. Ссылка инициализируется в момент создания и дальше не уже не может менять свою привязку к переменной. К примеру, переменная это ни что иное как адрес некоторой области памяти. Вот если 2е переменные определяют одну и ту же область памяти, то одна из переменных является ссылкой. Не путать с указателем. Указатель хранит адрес на этапе исполнения, а переменная (ссылка) хранит данные по некоторому адресу в памяти. 

это то понятно.

Код

CMyDlg &m_dlg;  // разве не должно быть CMyDlg m_dlg; ?
CMyTask(CMyDlg &dlg) : //эта строчка понятна

PM MAIL   Вверх
Alexeis
Дата 21.2.2013, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



  Это с зависимости от того чего хотят добиться. Если хотят иметь копию объекта класса CMyDlg тогда пишется CMyDlg m_dlg; если же хотят чтобы CMyTask хранил ссылку на созданный ранее или разделяемый объект, то пишут CMyDlg &m_dlg; 

Цитата(korian @  20.2.2013,  19:43 Найти цитируемый пост)
Не нравится передача указателя на функцию или функций больше чем одна - можно использовать интерфейс (в смысле полиморфизм).

  Зачем же мне городить огород с поздним связыванием? С виртуальными функциями, абстрактными интерфейсами и т.д. когда я могу связать все статически? Мало что это раздувает код, так оно еще делает его тормозным. При желании я вообще могу сделать ExecuteSubtask инлайном и получить максимальное быстродействие. Компилятор С++ умеет эффективно оптимизировать статичные связки. Например, он может легко выкинуть реализацию неиспользуемой простой функции, тогда как виртуальная всегда попадает в исполняемый файл. Это сколько нужно делать лишних движений, чтобы заменить один модификатор friend в том случае когда он находиться на своем месте. Вопрос ЗАЧЕМ ЭТО ДЕЛАТЬ?

Цитата(korian @  20.2.2013,  19:43 Найти цитируемый пост)
функция UpdateInternalParentState должна быть public

Функция должна быть паблик, если ее может вызвать из любой другой функции которая имеет доступ к объекту. В моем случае класс-хелпер (делегат) реализует внутреннюю логику, поэтому ему нужен доступ закрытым полям и функциям. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
mrgloom
Дата 21.2.2013, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 829
Регистрация: 8.6.2011

Репутация: нет
Всего: нет



ну тут написано http://ru.wikipedia.org/wiki/%D0%A1%D1%81%...0_%28C%2B%2B%29
Цитата

Ссылки нельзя объявлять без привязки к переменной (то есть не инициализировав при объявлении).

или когда мы объявляем в классе, то можно?
PM MAIL   Вверх
Alexeis
Дата 21.2.2013, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



  Так мы ее инициализируем в объявлении. Только не в объявлении поля (синтаксис С++ запрещает инициализировать поля при описании), а при объявлении класса в конструкторе. Не может получиться такого, что объект создан а ссылка не инициализирована. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0825 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.