Ir ao conteúdo
  • Cadastre-se

Dúvida sobre o comando new


Fibonacci2012

Posts recomendados

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?

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...