Aula 09 - Sobrecarga de Operadores / Curso de C++

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 ม.ค. 2025

ความคิดเห็น • 31

  • @luizinniziul2976
    @luizinniziul2976 5 หลายเดือนก่อน

    19:40
    eita, aula mass d+. até fiquei surpreso com a quantidade de operadores q podem ser sobrecarregados.

    • @JudSan
      @JudSan  5 หลายเดือนก่อน +1

      @@luizinniziul2976 É, da pra fazer muita coisa legal com esses operadores :)

  • @youseiy
    @youseiy ปีที่แล้ว +1

    Obrigado por continuar as aulas professor. Meu canal de TH-cam favorito pra estudar C++!

    • @JudSan
      @JudSan  ปีที่แล้ว

      Obrigado Yousei

  • @justanotherdev_
    @justanotherdev_ ปีที่แล้ว

    Que ótimo video professor, muito obrigado pela contribuição!

    • @JudSan
      @JudSan  ปีที่แล้ว

      Valeu Nasa

  • @guilhermesaraiva3846
    @guilhermesaraiva3846 ปีที่แล้ว

    Prof. que dispensa comentarios, simplesmente excepcional, obrigado pelas aulas.

    • @JudSan
      @JudSan  ปีที่แล้ว

      Obrigado Guilherme 👍

  • @GuillotineCloud
    @GuillotineCloud ปีที่แล้ว +2

    Like! Bem vindo de volta, professor! xD

    • @JudSan
      @JudSan  ปีที่แล้ว +1

      Valeu :)

  • @DanielJoseAutodesk
    @DanielJoseAutodesk ปีที่แล้ว +1

    Uma coisa curiosa que você menciona perto dos 15:21 ... Isto é verdade para quase toda linguagem que permite sobrecarga de operadores ... Muita gente vai ter sorte se não precisar mexer com códigos de outras linguagens onde existe a sobrecarga de operadores ... Cara tem cada LOUCURA 😨😨 ... cito aqui duas linguagens: SNOBOL e SMALLTALK ( esta última é mais simples ) ... uma vez tive que entender como um código nestas duas para conseguir fazer algo em C / C++, isto por que o algoritmo só existia nelas, agora não, o mesmo algoritmo existe em muitas outras ... Na epoca isto me deu uma baita de uma dor de cabeça😱😱 ... mas tinha que fazer a coisa, e era mais fácil estudar aquela maluquice do que tentar bolar a coisa do zero ...😂😂😂😂😁👍

    • @JudSan
      @JudSan  ปีที่แล้ว

      Você fala da possibilidade de modificar o comportamento da linguagem pela sobrescrita das operações para os tipos padrão?

  • @rodrigoleite9202
    @rodrigoleite9202 ปีที่แล้ว

    Pelo incrível que pareça hoje mesmo eu estava estudando "Polymorphism" e tinha essa parte de "Operator Overloading" e eu não estava entendendo nada (até agora claro).... Obg, professor, suas aulas são excepcionais!

    • @JudSan
      @JudSan  ปีที่แล้ว +1

      Valeu Rodrigo. Esses relatos me dão mais energia pra continuar.

  • @carlosbulkool5055
    @carlosbulkool5055 ปีที่แล้ว

    Prof. Judson Santiago adoro suas aulas, estou conseguindo aprender contigo
    em minutos, horas; o que não conseguia a meses, anos...
    Gostaria de saber se você tem algum curso avançado completo sobre c/c++
    para comprar? tipo formação completa do mesmo com foco em multiplataforma?!. Se não o tem poderia fazer um? ou me indicar de SUA PREFERÊNCIA, um que eu pudesse investir?
    Desde já muito obrigado pelo conhecimento, e que Deus te Abençoe🙏!
    Sou seu fã💖 Mestre🥷🧑‍🎓!

    • @JudSan
      @JudSan  ปีที่แล้ว +2

      Oi Carlos. Eu não tenho outro material de C++, todo o meu material está aqui no TH-cam. Esse curso completo que você está buscando, eu estou tentando criar ele aqui. A minha playlist "Programação de Computadores" contém a primeira parte do curso de C++. A playlist de POO, que estou construindo agora, contém a segunda parte do curso. Se quer investir em um curso legal, eu diria pra você se tornar membro do canal, esse é o melhor investimento que você pode fazer 😁

    • @carlosbulkool5055
      @carlosbulkool5055 ปีที่แล้ว

      @@JudSan Obrigado! Entendi.
      Vou continuar meus estudos aqui nesse excelente canal!! valeu mesmo.

  • @valdomiromorais
    @valdomiromorais ปีที่แล้ว

    Professor, muito obrigado pelo conteúdo!! É de grande importância pra mim e imagino que para muita gente!
    Professor, meu grande dilema hoje e entender como gerenciar um projeto completo! O desenvolvimento de um aplicativo completo em C++! O senhor tem algum curso nessa "pegada"? Que se proponha a ensinar, além da linguagem em si, também um projeto funcional?

    • @JudSan
      @JudSan  ปีที่แล้ว +1

      Oi Valdomiro. No meu curso de Programação de Computadores eu passo três projetos pros alunos fazerem justamente pra exercitar a construção de algo maior. Ainda não fiz nada semelhante aqui pra o curso de POO, mas é algo que está no meu radar pro futuro.
      De toda forma, fazer um programa completo é algo que não tem uma fórmula a ser ensinada, é juntar as pequenas partes que você vai aprendendo pra construir algo grande. Eu recomendo você ir fazendo as atividades dos laboratórios. Elas podem te dar ideias que você pode usar pra desenvolver aplicações maiores.
      Agora se você está falando em construir um programa com interface e tal, isso vai depender do sistema operacional e da sua aplicação em si. No curso de Programação de Jogos eu mostro como pegar esse conhecimento de C++ e usar pra criar jogos, com janelas e tudo que tem direito. No curso de Compiladores, eu mostro como aplicar esse conhecimento de C++ na construção de Compiladores e Interpretadores que podem ser usados na linha de comandos.
      Mas não tenho nenhum curso específico pra criar programas com interfaces gráficas. Existem N bibliotecas pra isso e a escolha da biblioteca vai depender muito da sua aplicação e sistema operacional. Por exemplo, lá em Jogos eu uso a biblioteca Win32 no Windows. Mas pra desenvolver uma aplicação de usuário no Linux uma solução comun é usar a biblioteca Qt. Aí é você ver que tipo de aplicação você quer construir e pesquisar as bibliotecas mais usadas nessas aplicações.

    • @valdomiromorais
      @valdomiromorais ปีที่แล้ว

      @@JudSan Valeu, professor, por tirar um tempinho pra me responder! Eu estou estudando a biblioteca (ou plataforma) Qt para aplicações Desktop! Mas vou ver teu curso de jogos! Sou Game Dev, trabalho com Unity e Godot, mas estou estudando mais o C++ pq quero ir pra Unreal e não quero ficar limitado às Bluprints!
      Teu conteúdo é valiosíssimo!! Vou ser membro, hein!!!? Final do mês em diante!
      🙂🙃

    • @JudSan
      @JudSan  ปีที่แล้ว +1

      @@valdomiromorais Show Valdomiro, os apoios são muito importantes pro canal. São eles que mantém as luzes acesas por aqui 🙏

  • @lincoln9521
    @lincoln9521 ปีที่แล้ว

    Professor, como fazer a diferenciação da sobrecarga do operador de incremento ++ prefixado e posfixado? E quanto ao operador * que pode ser tanto para multiplicação quanto para acessar um endereço? como sobrecarregar esses?

    • @JudSan
      @JudSan  ปีที่แล้ว +1

      Os operadores pré-fixados e pós-fixados são diferenciados por um parâmetro inteiro que o compilador passa automaticamente na versão pós-fixada. O parâmetro serve apenas para diferenciá-los e não é usado para nada:
      void operator++(); // pré-fixado
      void operator++(int); // pós-fixado
      ++x; // chama x.operator++();
      x++; // chama x.operator++(0);
      O operador * é mais simples porque ele recebe dois argumentos na multiplicação e apenas um quando funciona como operador de indireção.

    • @lincoln9521
      @lincoln9521 ปีที่แล้ว

      @@JudSan Entendi, muito obrigado :)

  • @cidgianni
    @cidgianni 8 หลายเดือนก่อน

    Prof Judson, bom dia. Em 05:29 tenho duas perguntas (😂) para a mesma linha: Tempo Somar(const Tempo& t) const; 01-Esta linha está criando outro objeto Tempo? 02-Não Entendi porque const fora do parentese, a direita. Também em 06:29 para a linha: Tempo Tempo::Somar(const Tempo& t) const { , não entendi Tempo espaço Tempo::. Não entendi este Tempo a esquerda. O const no final acredito que será respondido na pergunta anterior. 🤐

    • @JudSan
      @JudSan  8 หลายเดือนก่อน

      Olá @cidgianni. 01 - Sim, o método Somar internamente está criando um objeto do tipo Tempo e retornando uma cópia dele. 02 - Eu acho que expliquei isso em alguma aula anterior, não? Pergunto porque se não o fiz, foi vacilo grande meu. O const no final indica ao compilador que este método não vai alterar os atributos do objeto. Você está dizendo que o método é const. É uma informação a mais que serve como documentação do código e ajuda a evitar introdução de erros no código. Imagina você amanhã esquecendo que Somar não deve alterara o objeto e fazendo alguma alteração nele dentro de Somar. Neste caso, o compilador iria avisar com uma mensagem de erro, informando que este método foi declarado const e portanto não deve mudar atributos. 03 - Esse Tempo à esquerda de Tempo:: é o tipo de retorno da função. A função se chama Tempo::Somar e ela retorna um elemento do tipo Tempo. Então fica Tempo Tempo::Somar(...).

    • @cidgianni
      @cidgianni 8 หลายเดือนก่อน

      Muito obrigado....

    • @cidgianni
      @cidgianni 8 หลายเดือนก่อน

      @@JudSan apenas uma observação: você ainda não tinha explicado o Construtor de Cópia. Pelo seu planejamento, será explicado no módulo II... 🤣🤣🤣🤣

    • @JudSan
      @JudSan  8 หลายเดือนก่อน +1

      @@cidgianni Blz. Vou dar uma verificada na sequência dos assuntos pra corrigir isso.

  • @brenotanquista9543
    @brenotanquista9543 8 หลายเดือนก่อน

    O senhor não mencionou um detalhe:
    #include
    #include "tempo.h"
    int main(int argc, char** argv) {
    Tempo t1 = Tempo(23, 30);
    Tempo t3 = t1+5; // isso funciona
    t3.exibir(); // 28h:30min
    } e eu só implementei o "Tempo operator+(const Tempo &)", ou seja, meu palpite é que meu compilador chamou o construtor de Tempo passando o 5, assim criando um Tempo com 5h e 0minutos e fazendo a operação + entre eles dois

    • @JudSan
      @JudSan  8 หลายเดือนก่อน

      É isso mesmo Breno. Mas isso só acontece porque temos um construtor na classe tempo que aceita apenas um número. Ele possui um argumento padrão igual a zero para o valor de minutos. Isso faz com que o sistema de conversão de tipos consiga converter 5 para Tempo(5,0) e use a soma entre tempos.