CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

C/C++ - Ponteiros para objetos

Por Benedito Silva Júnior - publicado em 20/06/2016


Em programação, um ponteiro ou apontador é um tipo de dado de uma linguagem de programação cujo valor se refere diretamente a um outro valor alocado em outra área da memória, através de seu endereço. Um ponteiro é uma simples implementação do tipo referência da Ciência da computação.

Assim como é possível criar ponteiros para variáveis do tipo char, int ou float, também é possível criarmos ponteiros para objetos.

O código abaixo ilustra bem o uso desse conceito:

int nInt; //ponteiro do tipo int - é inicializado para apontar ao inteiro nInt int* pInt = &nInt; class Savings { public: int nAccountNumber; double dBalance; }; Saving s; //declara ponteiro ao objeto Savings e o inicializa para o endereço de s Saving* pS = &s; /* O tipo pS é "ponteiro para Savings", o qual é escrito como Savings* */ ... // designa valores ao número de conta e saldo do objeto Savings indicado por pS (*pS) .nAccountNumber = 2100; (*pS) .dBalance = 2350; /* Os parênteses são necessários devido à precedência de . ser maior que *. Sem os parênteses, *pS.nAccountNumber = 2100 seria interpretado como *(pS.nAccountNumber) = 2100, o que significa "armazenar 2100 no lugar apontado por pS.nAccountNumber". Isso gera um erro de compilador, pois nAccountNumber não é um ponteiro (nem pS um Savings). */ /* (*pS). dBalance = 2350 também pode ser escrito na forma "pS->dBalance = 2350". } Chamar uma função com um ponteiro de objeto: double withdraw(double dAmount); double deposit(double dAmount); //argumento para someOtherFunction() é "ponteiro para Savings" void someOtherFunction(Savings s) { s.deposit(140.0); } void someFunction() { Savings s = {2100, 0.0}; someOtherFunction(s); //passagem do objeto à função //Para passar o endereço do objeto ao invés do próprio objeto: ... void someOtherFunction(Savings* pS) { pS->deposit(140.0); } void someFunction() { Savings s = {2500, 0.0}; someOtherFunction(&s); } //passagem do endereço do objeto à funçao


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo