Introdução ao Construtor em C
Um construtor em C é usado no gerenciamento de memória da programação C ++. Ele permite tipos de dados internos, como int, float e tipos de dados definidos pelo usuário, como classe. O construtor na programação orientada a objetos inicializa a variável de um tipo de dados definido pelo usuário. O construtor ajuda na criação de um objeto. O nome do construtor é igual ao nome do objeto, mas não possui tipo de retorno. Um Construtor é executado automaticamente quando um objeto ou membro especial é criado. Aloca a memória para o novo objeto criado e pode ser sobrecarregado.
Código
// class with Constructor
class integer
(
int a, b;
public:
integer (void);
// declaration of Constructor
);
integer :: integer (void)
// constructor defined
(
a = 0, b = 0;
)
Usos do Construtor
- É um método especial que possui o mesmo nome que o nome da classe e inicializa o objeto sempre que ele é criado. Portanto, é simples e fácil de executar.
- É usado principalmente para gerenciamento de memória. Eles são usados para inicializar e remover o bloco de memória quando ele não é mais necessário, com as opções Novo e Excluir, conforme especificado pelo programador.
- O compilador cria um construtor padrão sempre que o objeto é criado. Quando você não declarou o construtor, o compilador criaria um. É útil porque o objeto e a função no programa sabem que o objeto existe
- Um construtor para um objeto é criado quando uma instância é um objeto que é declarado. Uma classe pode ter vários construtores para diferentes situações. A sobrecarga de construtores aumenta a versatilidade da classe, tendo muitos construtores em uma classe individual.
Overclass X's a, b value:: 0, 0
Overclass X1's a, b value:: 4, 5
Overclass X2's a, b value:: 6, 12
Portanto, o construtor está sobrecarregado com valores diferentes.
Tipos de construtor em C
Os principais tipos do construtor são explicados da seguinte forma:
1. Construtor Padrão
Um construtor padrão não possui parâmetro ou o parâmetro atual possui valores padrão. Se nenhum construtor definido pelo usuário estiver presente na classe, o compilador criará um novo, se necessário, e isso será chamado como construtor padrão. Este é um membro público interno da classe. Este construtor terá um corpo inteiro e nenhum inicializador. O construtor padrão não fornece nada específico, simplesmente aloca memória para o objeto. Um construtor da classe X é superficial se todas as seguintes afirmações forem verdadeiras. É definido implicitamente. Se X não tiver classes e funções básicas virtuais. Todas as classes base e não membros estáticos do X têm construtores triviais.
2. Construtores parametrizados
O construtor que pode aceitar os argumentos é chamado de construtores parametrizados. Ele pode especificar o argumento sempre que necessário.
Código
class X (
int i;
public:
void abc(void);
void xyz(void);
// member function definitions
)
X 0b 1;
// default constructor for creating 0b1. hence user can use it,
// implicitly define default constructor is public
// member of the class
0b1. abc();
0b1. xyz();
3. Construtor de Cópias
É usado para inicializar e declarar um objeto de outro objeto
integer 10(12);
definiria o objeto 10 e, ao mesmo tempo, inicializaria com o valor de 12. Outra forma dessa declaração é
integer 10 = 12;
O processo é chamado de inicialização de cópia. Um construtor de cópia é usado sempre que o objeto temporário é criado. A aplicação do construtor de cópia é a seguinte; Retorno do objeto como valor da função Inicialização do objeto por outro objeto da mesma classe
Sintaxe
class_name :: class_name(class_name &ptr)
class
(
//data
public: game(arguments); // parameterized constructor
………
………
);
Código
class school
(
char name(25);
int rno;
public: school(char, int); //parameterized constructor
);
school :: school (char n, int r)
(
name=n;
rno=r;
)
4. Sobrecarga de construtor
Quando vários construtores são usados na mesma classe, isso é chamado de Sobrecarga de Construtor. Ele nos oferece várias maneiras de inicializar objetos em uma classe. Aumenta a flexibilidade ao ter vários construtores em uma única classe.
Código
#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)#include
#include
using namespace std;
class student
(
int score;
char name(30);
public:
student(int x, char y())
// parameterized constructor
(
score =x;
strcpy(name, y);
)
student()
// normal constructor
(
score =100;
strcpy(name, "y");
)
void input_data()
(
cout<>score;
cout<>name;
)
void show_data()
(
cout<<"\n score :"< cout<<"\n Name :"< )
);
int main()
(
student s(10, "z");
s.show_data();
getch();
return 0;
)
5. Construtor bidimensional
É como uma matriz na estrutura e contém linhas e colunas. Ele contém uma matriz de cadeias onde uma linha representa uma cadeia e uma coluna representa um valor de cadeia.
Código
// overloading class constructors
#include
using namespace std;
class CRectangle
(
int width, height;
public:
CRectangle ();
CRectangle (int, int);
int area (void)
(
return (width*height);
)
);
CRectangle::CRectangle ()
(
width = 7;
height = 5;
)
CRectangle::CRectangle (int a, int b)
(
width = a;
height = b;
)
int main ()
(
CRectangle rect (7, 5);
CRectangle rectb;
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
)
Sintaxe
char arrayname(x)(y);
onde 'x' é o número de linhas 'y' é o número de colunas.
O número de linhas deve ser o mesmo que o número de seqüências de caracteres nessa matriz. O número da coluna deve ser maior ou igual ao comprimento da string ou pode ser mais um
Exemplo
Se houver 8 cadeias na matriz e o comprimento da cadeia mais longa for 10, a matriz será definida da seguinte maneira
Char days(8)(11);
6. Construtor Privado
É usado para criar um objeto de classe por uma única vez. É definido que a classe não possui várias instâncias da classe. É o mesmo que outros construtores, mas definido como privado. Ele pode acessar apenas o objeto dessa classe definido.
Código
classroom()
(
private:
Somente essa parte do programa e pode ser acessada e definida apenas na seção privada
Conclusão - Construtor em C
Um construtor pode usar parâmetros nulos ou mais. Uma classe pode definir um ou muitos construtores. Cabe a nós decidir qual construtor executar durante a criação do objeto, passando uma lista de argumentos apropriada ao construtor, definindo o valor padrão para o parâmetro construtor. Ponteiros não podem ser usados em construtores porque seus endereços não podem ser considerados. Os construtores não podem ser declarados como estáticos, constantes ou voláteis.
Artigos recomendados
Este é um guia para o Construtor em C. Aqui discutimos o uso do construtor, os tipos do construtor com exemplos, código e saídas. Você também pode consultar nossos outros artigos relacionados para saber mais.
- Copiar Construtor em Java
- Matrizes em programação C
- Construtor em Python
- Construtor em JavaScript
- Multiplicação de matrizes de programação C