|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
Указатели в MFC26.11.2009, 23:04. Показов 2564. Ответов 18
Метки нет (Все метки)
Здраствуйте!
Подскажите пожалуйста....вот допустим при кодинге на MFC при создании объекта создаём указатель на него....но почему нельзя просто объект создать на тип..а именно указатель......в некоторых ситуациях создаётся просто объект на тип..объясните в чём разница?...Я знаю что указатель содержит в себе адрес объекта! заранее благодарен!
0
|
|
| 26.11.2009, 23:04 | |
|
Ответы с готовыми решениями:
18
Указатели и указатели на указатели, а также типы данных Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей? Через указатели на указатели посчитать сумму двух чисел и записать в третье |
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
||||||
| 29.11.2009, 12:40 | ||||||
|
Если я правильно понял вопрос вы пытаетесь понять в чем разница между
Второй метод, правда, проигрвает немного в скорости доступа к членам класса из-за дополнительного разименования. Но это уже относится к вопросу использования объекта , а не его создания.
0
|
||||||
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|||||||||||
| 30.11.2009, 09:40 [ТС] | |||||||||||
|
Спасибо за ответ
...очень благодерен....Можно ещё кое-что утонить? Вот в книжках описывется...точнее у меня в книге...по Visual C++...
0
|
|||||||||||
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 30.11.2009, 17:26 | |
|
Да, это два корректных способа доступа к объектам в C++.
Какой-то особой причины для использвания указателей я не знаю. Повторюсь - это всего лишь вопрос вкуса и стиля программирования.
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
| 30.11.2009, 17:41 [ТС] | |
|
Большое за спасибо за ответ....вы облегчили мои страдания...а то в книгах это не очень ясно написано..особенно если читаешь кодинг под виндой....там даётся тока код и объяснени о том как он работает....но почему именно так ....не пишут....
А вы пишете на С++? Я вообще писал на чистом API....вот хочу перестроиться на классы....хотелось бы на Buildere писать...но по этой среде мало книжек......да и в Visual C++ мне кажется больше возможностей....!
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 30.11.2009, 18:33 | |
|
Да, я пишу на С++ в среде Visual Studio .NET 2002
MFC не использую, не нравится он мне. С С++ Builder 3.0 работал некоторое время, мне он понравился. Один из моих друзей, правда, жаловался, на его последние версии что там много ошибок. Насчет того в Visual C++ больше возможностей чем в C++ Builder не соглашусь. Это зависит от того что и какие версии сравнивать. У этих продуктов различное позиционирование на рынке, не стоит об этом забывать.
0
|
|
|
GreenEx
|
|
| 30.11.2009, 19:56 | |
|
To bazile:
> Второй метод, правда, проигрвает немного в скорости доступа к членам класса из-за дополнительного разименования. Но это уже относится к вопросу использования объекта , а не его создания. Что Вы имели в виду? > Какой-то особой причины для использвания указателей я не знаю. Повторюсь - это всего лишь вопрос вкуса и стиля программирования. Вы не видете причины использования в данном примере или, вообще, в С++ ? |
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
| 30.11.2009, 22:32 [ТС] | |
|
GreenEx
а в чём по вашему причина использования указателя в данном примере? Пример Сверху с классами! Можно же просто объект создать и использовать методы класса!
0
|
|
|
GreenEx
|
|||||||||||
| 30.11.2009, 23:52 | |||||||||||
|
Основная мотивация ООП - повторное использование кода.
Т.е. создавая класс однажды, Вы стараетесь сделать его максимально(в разумных пределах) универсальным для повторного использования. В данном примере Вы можете повторно использовать класс CTemplateApp, но уже не с CMainFrm, а с некоторым другим классом CMyMainFrm, производным от CMainFrm. Для этого понадобиться всего-лишь отнаследовать от CTemplateApp новый класс CMyTemplateApp и переопределить в нем всего один метод:
CTemplateApp<CMainFrm> App; - аналогичен Вашему примеру с CMainFrm или CTemplateApp<CMyMainFrm> App; - аналогичен моему примеру с CMyMainFrm Универсально? На этом основан другой (отличный от MFC) враппер над Win32API, который я и советую Вам (как и всем другим) использовать вместо MFC. И еще об указателях. Любой статически создаваемый объект занимает место в секции .data, что увеличивает размер исполняемого файла. Иногда статическое (или в стеке) создание экземпляров бывает вредно и даже опасно для программы. В этих случаях создание не через new запрещают семантическим путем. |
|||||||||||
|
GreenEx
|
|
| 30.11.2009, 23:55 | |
|
Забыл указать рекомендуемый мной враппер... :о)
Это WTL. Информацию о нем по-русски можно почитать на rsdn.ru вразделе 'Статьи' |
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
| 01.12.2009, 00:26 [ТС] | |
|
Как я вас понял......указатель на объект создают тода...если я буду часто ссылаться через указатель на данные........А если временная переменная.....ну я имею ввиду допустим один раз вызвать функцию..то можно просто объект создать....
Или до меня не дошло? )
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
| 01.12.2009, 00:27 [ТС] | |
|
Как я вас понял......указатель на объект создают тода...если я буду часто ссылаться через указатель на данные........А если временная переменная.....ну я имею ввиду допустим один раз вызвать функцию..то можно просто объект создать....
Или до меня не дошло? )
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 01.12.2009, 09:53 | |
|
2J-Tosha:
Я забыл еще про один момент. Это время существования объекта. Объект созданный как переменнная CComeMFC_Class c_var() будет существовать только в пределах охватывающего его блока, а объект созданный через new будет существовать до момента явного вызова деструктора в программе. Поэтому вот этот код наверняка вызовет ошибку:[code]BOOL CTemplateApp::InitInstance() { CMainFrm m_pMainWnd; m_pMainFrm.ShowWindow(m_nCmdShow); }[code]Т.к. C++ автоматически вызовет деструктор класса CMainFrm в конце функции InitInstance.
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|||||||||||
| 02.12.2009, 00:46 [ТС] | |||||||||||
|
Я прошу прощения.....у мен ещё возник вопрос....
какая разница между этими предложениями:
0
|
|||||||||||
|
0 / 0 / 1
Регистрация: 26.08.2009
Сообщений: 12
|
|||||||||||
| 03.12.2009, 13:26 | |||||||||||
Второе: второй пример просто неверен синтаксически. (после оператора new должено стоять имя типа, т.е. запись
Третье: (при учете что все написано правильно) в первом случае при выходе из функции перемення one будет указывать на несуществующий объект, тогда как во втором случае объект создается в куче, кот. не имеет никакого отношения к стеку.
0
|
|||||||||||
|
GreenEx
|
||||||
| 03.12.2009, 15:49 | ||||||
|
> В обоих случах Myclass должен быть родителем для YouClass (иначе просто указатели не преобразуются)
Я бы не был столь категоричен. Вот например:
Это, надеюсь, не камень в мой огород? Или мне объяснить про стек и кучу? |
||||||
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|||||||||||
| 04.12.2009, 23:44 [ТС] | |||||||||||
|
Хорошо....тода вот другой пример:
0
|
|||||||||||
|
GreenEx
|
|
| 05.12.2009, 20:02 | |
|
Я бы настоятельно рекомендовал заняться изучением С++. Изучением по книге, а не в форуме, а то это начинает напоминать прием родов по телефону.
На данном этапе подойдет любая книга по С++, но я рекомендую классику - Страуструп. |
|
|
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 11
|
|
| 05.12.2009, 23:49 [ТС] | |
|
Я конечно извиняюсь...но я читал книги по С++....читал про указатели....но вся проблема в том что кода читаешь книгу для винды...там не объсняется почему создаётся указатель на то то...то то...там просто говорится..создаётся указатель....то есть так и надо....но хотелось бы всё равно узнать суть....почему именно так...а не подругому.....вот поэтому я и решил обратитья за помощью...и спросить в этом форуме! У меня есть третье издание Страуструпа...я бы не назвал эту книгу классикой.....там всё СЛИШКОМ загружено....я понимаю что он автор этого языка..но у него не правильный подход к изложению материала....
С++ я освоил(правда не весь)...с помощью книжки Р.Лафоре Classic Computer Science....мне она очень понравилась!
0
|
|
| 05.12.2009, 23:49 | |
|
Помогаю со студенческими работами здесь
19
В matlab есть указатели на переменные или что-нибудь похожее на указатели? Используя нетипизированные указатели и указатели на подпрограммы обобщить сортировку пузырьком Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|