Ir ao conteúdo
  • Cadastre-se
Fibonacci2012

Dúvida sobre o comando new

Recommended Posts

O programa abaixo é para calcular a área de um retângulo:

#include <iostream>
using namespace std;

class CRectangle {
int *width, *height;
public:
CRectangle (int,int);
~CRectangle ();
int area () {return (*width * *height);}
};

CRectangle::CRectangle (int a, int {
width = new int;
height = new int;
*width = a;
*height = b;
}

CRectangle::~CRectangle () {
delete width;
delete height;
}

int main () {
CRectangle rect (3,4), rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
}

O que aconteceria se eu tirasse as linhas abaixo?

width = new int;

height = new int;

Eu já li que quando você declara os dois ponteiros usando o tipo int, ele já aloca automaticamente espaços na memória de 4 bytes para cada um. Então, se for assim, pra quê nós precisamos dessas duas linhas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso, se você não colocar o new, não vai ter espaço na memoria para guardar os valores. Quando você faz o new int, ele cria um lugar na memoria para 1 inteiro, e coloca no ponteiro essa referencia. Depois que se usa um new em um ponteiro, ele precisa ser deletado com o delete, se não fica sendo usado na memoria até o programa encerrar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×