Tag: Memoria dinamica
POO, conceitos (Cap-05, Memoria dinâmica)
#arrays de objetos
os arrays de objetos
#include "pch.h" #include <iostream> #include <string> using namespace std; class Ponto { int x, y; public: Ponto(int x0 = 0, int y0 = 0); ~Ponto(); }; int main() { //ou indicamos o construtor que queremos usar Ponto a[] = { Ponto(1,3), Ponto(2,4), Ponto(5,7) }; Ponto b[] = { {1,3}, {2,4},{5,7} }; //ou usamos o construtor por omissão Ponto c[3]; Ponto d[3] = { Ponto(1,3) }; system("pause"); }
//main #include "Relogio.h" int main() { { Relogio a[10]; //criar um array de 10 objetos } system("pause"); }
//Relogio.cpp #include "Relogio.h" Relogio::Relogio(int hora, int minuto, int segundo) { cout << "Relogio criado" << endl; } Relogio::~Relogio() { cout << "Relogio destruido" << endl; }
//Relogio.h #pragma once #include "pch.h" #include <iostream> #include <string> using namespace std; class Relogio { public: Relogio(int hora = 0, int minuto = 0, int segundo = 0); ~Relogio(); };
#variaveis em memoria dinâmica
o uso do operador new permite criar um objecto até ser explicitamente destruido com o operador delete
pVar = new tipo; //ponteiro para um endereço
delete pVar;
ou podemos usar da seguinte forma
int *v1 = new int(4); //valor inicial a 4
delete v1;
#objectos em memoria dinâmica
ou aplicar a uma classe
#include "pch.h" #include <iostream> #include <string> using namespace std; class Ponto { int x, y; public: Ponto() { x = 0; y = 0; cout << "construindo" << endl; }; ~Ponto() { cout << "destruindo" << endl; }; void imprimir() { cout << "valor x=" << x << " valor de y=" << y << endl; } }; int main() { { //usar memoria dinamica Ponto *p = new Ponto; p->imprimir(); delete p; } system("pause"); }
#arrays dinamicos de objetos
para criar um é necessário fazer:
pVar = new tipo[dim];
para libertar a memoria:
delete [] pVar;
#include "pch.h" #include <iostream> #include <string> using namespace std; class Ponto { int x, y; public: Ponto() { x = 0; y = 0; cout << "construindo" << endl; }; ~Ponto() { cout << "destruindo" << endl; }; void imprimir() { cout << "valor x=" << x << " valor de y=" << y << endl; } }; int main() { { //usar arrays dinamico de objectos, com construtor e destrutir para cada elemento Ponto *p = new Ponto[4]; for (int i = 0; i < 4; i++) { p[i].imprimir(); } delete [] p; } system("pause"); }
Tags : arrays de objetos, cap05, Memoria dinamica, POO