Когда использовать __gc для классов и структур? - PullRequest
2 голосов
/ 06 октября 2010

Я обновляю старый код на C ++ и обнаруживаю, что многие классы определены как:

public __gc class NameOfClass{  }

Я нашел немного информации о __gc здесь , но этоПохоже, что он предоставляет информацию только для VS 2003. Документация MSDN, поставляемая с моей копией VS 2005, указывает на то, что __gc может больше не использоваться.

Я сам из C #, поэтому я хочуубедитесь, что я не ошибаюсь при обновлении этого кода.Является ли сборщик мусора автоматическим для классов c ++ в .NET 2.0 и выше?Или ключевое слово __gc каким-то образом заменено?

Ответы [ 2 ]

4 голосов
/ 06 октября 2010

Вы смотрите на C ++ с управляемыми расширениями, что было краткой и неудачной попыткой добавить функциональность clr в cpp с использованием довольно изобретательного синтаксиса.Я полагаю, что начиная с 2005 года полностью поддерживается c ++ cli, что является полной реализацией clr в C ++.Посмотрите на this для получения рекомендаций по миграции с m.

1 голос
/ 06 октября 2010

Это было несколько (возможно, полностью) заменено; Я считаю, что он все еще поддерживается для BC, но в VS2005 появился новый механизм, который сделал управляемые типы более явными. Смотри: http://msdn.microsoft.com/en-us/library/xey702bw%28v=VS.80%29.aspx

Для справки, большая проблема со старым синтаксисом состояла в том, что он добавил перегруженное использование стандартного синтаксиса C ++, который зависел от базовых типов, что ужасно запутывало в коде. Новый синтаксис гораздо лучше отличает управляемые дескрипторы от неуправляемых указателей.

...