Programar em C++/Estruturas: diferenças entre revisões
[edição verificada] | [edição verificada] |
Conteúdo apagado Conteúdo adicionado
Movido do livro de C |
Sem resumo de edição |
||
Linha 83:
Este simples detalhe revela uma característica importante das estruturas em C++: Nesta linguagem as estruturas são tratadas como tipos primitivos de objetos. Elas têm características semelhantes às classes, que veremos nos capítulos subsequentes.
As estruturas em C++ também podem conter funções além de dados. Este fato vem da
== Construtores ==
Os construtores são funções que são criadas automaticamente sempre que tentamos criar um objeto. Eles funcionam da mesma maneira que construtores de classe. A esses que são criados automaticamente são os chamados de defaut.
Se escrevermos o código:
<source lang="cpp">
struct Person
{
Linha 100:
int height;
};
int main ()
{
Linha 108:
return 0;
}
</
O resultado é:
The person's name is and height is -858993460
Aqui é criado um defaut constructor no momento em que criamos a
Como as variáveis membro não foram iniciadas, o valor de name está vazio e o na variável height está um valor qualquer – que é lixo!
Linha 119:
;Constructor sem argumentos
Podemos ter um
<source lang="cpp">
struct Person
{
string name;
int height;
Person() //
{
name = "No name assigned";
Linha 131:
}
};
</
*O nome do
*O
Refazendo o nosso exemplo
<source lang="cpp">
#include <iostream>
#include <string>
Linha 158:
return 0;
}
</
Repare que demos valores defaut ás variáveis. Agora não estamos no caso de ter p1.name=???
Linha 167:
Termos um constructor sem argumentos é um melhoramento face ao defaut constructor pois agora temos valores defaut para as variáveis membro.
Porém seria melhor se conseguíssemos inicializar as variáveis membro com valores dados pelo utilizador enquanto o programa estivesse e a correr. E realmente podemos fazer se passarmos argumentos.
<source lang="cpp">
#include <iostream>
#include <string>
using namespace std;
const int MAX = 3;
struct Person
{
string name;
int height;
Linha 187 ⟶ 188:
}
};
int main ()
{
Linha 202 ⟶ 203:
return 0;
}
</
Repare que os argumentos do construtor têm de estar na ordem esperada
;Separar o
<source lang="cpp">
#include <iostream>
#include <string>
Linha 217 ⟶ 218:
int height;
Person(); //
Person(string, int); //
};
Linha 247 ⟶ 248:
return 0;
}
</
* Vamos ver a função main(): declarámos 2 variáveis uma int e outra string. Pedimos para a pessoa escrever o nome e colocámos o valor na variável string, depois pedimos a altura e colocámos na variável int. Depois chamámos o
* Repare que para definirmos fora o construtor recorremos ao operador scope ::
<source lang="cpp">
Person::Person()
Person::Person(string s, int h)
</
* Repare que no prototype dos
|