![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.09.2009
Сообщений: 17
|
![]()
Совсем недавно я начал изучать С++, когда попытался создать Windows-приложение в Visual Studio, большая часть кода не вызвала у меня вопросов, но все же я так и не понял для чего используется оператор ^, и чем отличается gcnew от new. Подскажите пожалуйста, как можно подробнее, если есть возможность.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Если вы хотите изучать нормальный C++ (или более политкорректно - "чистый C++"), то вам этого знать не обязательно. Операторы ^ и gcnew - это местные аналоги * и new из обычного C++, имеющие место в managed C++, он же C++ CLI. Последний представляет собой дикое сочетание вкуса и цвета нормального C++ и C#. Настоятельно не рекомендую копаться в этом довольно плохо сделанном гибриде, и заниматься либо C++, либо C#.
Подозреваю, что в Visual Studio вы при создании проекта выбираете тип проекта Visual C++ -> CLR. Консольное приложение на обычном C++ это Visual C++ -> Win32 -> Консольное приложение Win32.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 05.09.2009
Сообщений: 17
|
![]()
Да, вы правы, я именно так и делал. До этого я программировал на С# и только недавно начал изучать С++.
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 12.11.2014
Сообщений: 4
|
![]()
Скорее всего ^ выполнена в виде макроса, в котором прописано инстанциирование объекта шаблонного класса-обертки над указателем на ресурс, принимающего тип в качестве параметра, тогда такая штука скажем
String^ ptr = gcnew String("abc"); превратится в template<typename T> // в качестве T будет String class GC { T* value; // суть в том что наш ресурс расположен по этому указателю GC() { // хитрая реализация, вызовы методов GC } GC( const GC& other ) { // хитрая реализация } GC& operator = ( const GC& other ) { // хитрая реализация } ~GC( ) { // хитрая реализация } GC* operator -> () { return this; } }; то есть в обертку над указателем на ресурс того типа (в данном случае String) который создаем. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,371
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Используют ли структуры(struct) в классах ? | veter_s_morya | Общие вопросы C/C++ | 3 | 08.08.2010 20:18 |
Для чего используют typedef | prikolist | Общие вопросы C/C++ | 17 | 16.04.2009 15:36 |
Для чего вы программируете? | Elefanter | Свободное общение | 14 | 17.02.2008 21:54 |