Fala Victor,
Tudo bem?
Sobre a sobrecarga de construtores:
A sobrecarga de construtores cria a possibilididade de criarmos objetos de formas diferente, e eu vou explicar com base no seu exemplo:
Neste exemplo abaixo temos um construtor, da classe Funcionario, que quando utilizamos para a criação de um objeto do tipo Funcionario, ele já estabelece um valor para o Salario e para o CPF.
Ou seja, quando eu crio um objeto do tipo Funcionario, usando o contrutor abaixo, e passo os parâmetros para salario e cpf. O objeto criado já contém o valor dessas 2 propriedades.
public Funcionario(double salario, string cpf)
{
Salario = salario;
CPF = cpf;
}
Sobre o this no construtor:
public Funcionario(string cpf) : this(1500, cpf)
Neste caso, estamos criando mais um construtor, que só recebe o cpf. o this informa que ele vai usar o outro contrutor que recebe salario e cpf, porém vai passar um valor fixo de 1500.
Conseguiu compreender?
Continue estudando. Você vai longe!