Managed C ++ ^ (punho) -> O que é e como ele se relaciona com referências e ponteiros
-
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 #?
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.