|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2010, 00:12 | #1 |
Пользователь
Регистрация: 05.09.2009
Сообщений: 17
|
Для чего используют операторы ^ и gcnew?
Совсем недавно я начал изучать С++, когда попытался создать Windows-приложение в Visual Studio, большая часть кода не вызвала у меня вопросов, но все же я так и не понял для чего используется оператор ^, и чем отличается gcnew от new. Подскажите пожалуйста, как можно подробнее, если есть возможность.
|
23.11.2010, 01:10 | #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++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
23.11.2010, 11:49 | #3 |
Пользователь
Регистрация: 05.09.2009
Сообщений: 17
|
Да, вы правы, я именно так и делал. До этого я программировал на С# и только недавно начал изучать С++.
|
12.11.2014, 23:49 | #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) который создаем. |
13.11.2014, 12:13 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Используют ли структуры(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 |