Managed C ++ ^ (punho) -> O que é e como ele se relaciona com referências e ponteiros

StackOverflow https://stackoverflow.com/questions/1820841

  •  10-07-2019
  •  | 
  •  

Pergunta

O que é a diferença entre um identificador para um objeto em C ++ gerida

tais como:

System::String^ str = gcnew System::String();

e do comum C ++ ponteiros?

Também como eles se relacionam com as referências que temos em C #?

Foi útil?

Solução

Você não está falando (o mais velho) Managed C ++, mas cerca de C ++ / CLI, certo?

Em C #, o código é equivalente a

System.String str=new System.String();

Em C ++ / CLI, um identificador para um objeto é exatamente o mesmo como uma referência em C # -. Você tem contagem de referência, coletor de lixo etc

Ordinária C ++ ponteiros, por outro lado, são (na maioria dos casos) ponteiros para objetos não gerenciados. Você pode (é claro) têm ponteiros C ++ gerida objetos, apenas a forma como você tem ponteiros disponíveis em C # (em código inseguro). Olhe aqui para uma explicação detalhada de ponteiros em C #, e aqui para alguns detalhes sobre ponteiros em C ++ / CLI. Os ponteiros não são tratados pelo coletor de lixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top