Principais componentes:
Dois componentes principais do objeto exclusivo_ptr são fornecidos abaixo:
A. Ponteiro armazenado:
É usado para gerenciar os objetos criados por um ponteiro único. É criado no momento da criação do ponteiro e pode ser alterado de maneiras diferentes.
B. Deleter armazenado:
Ele leva o argumento do tipo de ponteiro armazenado que é usado para excluir o objeto gerenciado. Também é criado no momento da criação do ponteiro e pode ser alterado de maneiras diferentes.
Exemplo 1: Crie um objeto ponteiro de uma classe com construtor
A maneira de declarar os objetos de ponteiro exclusivo de uma classe e acessar o método da classe é usando os objetos como mostrado no exemplo a seguir. Uma aula com um construtor e um método público foi declarado no código. O construtor tem três argumentos. O primeiro ponteiro único foi criado chamando o construtor com três valores de argumento. O Resultado() O método é chamado pelo objeto de ponteiro que calcula a soma de três valores de argumento do construtor. Em seguida, o segundo objeto de ponteiro único é criado sem chamar o construtor, e o primeiro ponteiro é movido para o segundo ponteiro. O Resultado() O método é chamado pelo segundo objeto de ponteiro.
// inclui bibliotecas necessárias
#incluir
#incluir
UsandoNamesPace std;
// Defina a classe
classe adição
int número 1, número2, número3;
público:
// declarar o construtor
Adição (int a, int b, int c)
número1 = a;
número2 = b;
número3 = c;
// Declare o método para calcular a soma
int resultado ()
retorno número 1 + número2 + número3;
;
int main ()
// declarar o primeiro ponteiro
Único_ptr Pointer1 (nova adição (45, 55, 30));
cout<<"The result of sum using the first pointer :"// Declare o segundo ponteiro
Único_ptr pointer2;
// mova o primeiro ponteiro para o segundo ponteiro
pointer2 = mover (ponteiro1);
cout<<"The result of sum using the second pointer :"return0;
Saída:
A saída a seguir aparecerá após a execução do código acima. A soma de 45, 55 e 30 é 130 que foi impressa para ambos os ponteiros.
Exemplo 2: Crie um objeto ponteiro de uma classe com construtor e destruidor
A maneira de declarar um objeto de ponteiro único de uma classe com construtor e destruidor foi mostrado no exemplo a seguir. A classe contém um construtor com um argumento, um método público chamado Display () para o valor da variável de classe e um destruidor que imprimirá uma mensagem de destruição antes de destruir o objeto da classe. O método Display () é chamado após a criação do objeto Pointer exclusivo no código.
// inclui bibliotecas necessárias
#incluir
#incluir
UsandoNamesPace std;
// Defina a classe
Cliente de classe
nome da string;
público:
// declarar o construtor
Cliente (string n)
nome = n;
cout<<"The resource is allocated.\n";
// Declare o método para imprimir o nome do cliente
Void Display ()
cout<<"The name of the customer is: "<< name <<"\n";
// declarar o destruidor
~ Cliente ()
cout<<"The resource is destroyed.\n";
;
int main ()
// ALLOCAR o objeto de recurso que pertence ao exclusivo_ptr
exclusivo_ptrUpointer new Customer ("Mir Abbas");
Upter-> display ();
return0;
Saída:
A saída a seguir aparecerá após a execução do código acima:
Exemplo 3: Verifique o ponteiro depois de transferir a propriedade
A maneira de verificar a propriedade do ponteiro exclusivo mostrou no exemplo a seguir, criando dois ponteiros exclusivos de uma classe. Uma classe com duas variáveis de string e um método público foi declarado no código. O método book_details () da classe é chamado depois de criar o primeiro objeto de ponteiro exclusivo da classe. Em seguida, o segundo objeto de ponteiro único foi criado e o primeiro ponteiro foi movido para o segundo ponteiro que destrói o primeiro ponteiro. A propriedade de ambos os ponteiros deve ser verificada mais tarde.
// inclui bibliotecas necessárias
#incluir
#incluir
UsandoNamesPace std;
// Defina a classe
livro escolar
String title = "A linguagem de programação C ++";
String Author = "Bjarne Stroustrup";
público:
// Declare o método para imprimir detalhes do livro
voidBook_details ()
cout<<"Book Name: "<< title <<"\n";
cout<<"Author Name: "<< author <<"\n";
;
int main ()
// declarar o primeiro ponteiro
Único_ptr pointer1 (novo livro ());
pointer1-> book_details ();
// Declare o segundo ponteiro
Único_ptr pointer2;
// mova o primeiro ponteiro para o segundo ponteiro
pointer2 = mover (ponteiro1);
// Verifique o primeiro ponteiro
if (static_cast (pointer1)) cout<<"The first poiner is not null\n";
elsecout<<"The first poiner is null\n";
// Verifique o segundo ponteiro
if (static_cast (pointer2)) cout<<"The second poiner is not null\n";
elsecout<<"The second poiner is null\n";
return0;
Saída:
A saída a seguir aparecerá após a execução do código acima. De acordo com a saída, a propriedade do primeiro ponteiro foi removida e a mensagem, “O primeiro ponteiro é nulo”Imprimiu para o primeiro ponteiro. A propriedade do segundo ponteiro existe e a mensagem, “O primeiro ponteiro não é nulo”Imprimiu para o segundo ponteiro:
Conclusão:
Os propósitos de usar um ponteiro exclusivo na programação C ++ foram descritos neste tutorial usando vários exemplos. As maneiras de criar um ponteiro único, transferir a propriedade do ponteiro e verificar a propriedade atual do ponteiro foram explicadas aqui para ajudar os leitores a saber o uso do ponteiro único corretamente.