Construtor em C - Usos e tipos do construtor com exemplos

Índice:

Anonim

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.

  1. Copiar Construtor em Java
  2. Matrizes em programação C
  3. Construtor em Python
  4. Construtor em JavaScript
  5. Multiplicação de matrizes de programação C