Bimetal - Clube do Hardware
Data de Nascimento 23/08/1993 (26 anos)
Bimetal respondeu ao tópico de Bimetal em C/C#/C++
Olá @arfneto. No caso poderia ser qualquer aplicação simples. Seria só mesmo pra eu saber como se implementa isso.
Bimetal começou a seguir O int da sobrecarga do operador ++, Criação de manipuladores parametrizados, Sobrecarga de operador não convencional e e 3 outros 24 de janeiro
Agora entendi. Então este tipo de função de sobrecarga faz com que, na atribuição, haja uma espécie de "casting" implícito do tipo da classe para o tipo atribuído. Embora eu tivesse o mesmo efeito prático se eu sobrecarregasse o operador de atribuição(=). Obrigado, pessoal.
@João Vitor Sacramento Rocha Como assim o tipo é da classe Valor? Como isso foi definido? E o que eu tenho que estudar exatamente pra entender isso? POO abrange muita coisa.
Olá pessoal. Eu me deparei com um tipo de "sobrecarga de operador"(ou talvez uma sobrecarga de um tipo primitivo) que foge da sintaxe comum(tipo operator símbolo(parâmetro)). Vou deixar um exemplo abaixo pra ficar mais claro. #include <iostream> class Valor { private: int valor; public: explicit Valor(int valor); operator int*(); }; Valor::Valor(int valor) { this->valor = valor; } Valor::operator int*() { int* val = new int; *val = valor; return val; } int main() { Valor dois(2); int* val; val = dois; std::cout << "Valor: " << *val; } As minhas dúvidas são as seguintes: esta é uma sobrecarga de um tipo primitivo? Como é possível uma função de sobrecarga sem um tipo de retorno retornar um tipo? Como foi possível atribuir o objeto ao tipo inteiro sem a sobrecarga do operador de atribuição(=)? É necessário este tipo de sobrecarga retornar um ponteiro sempre? Como funciona este tipo de sobrecarga exatamente? Achei muito interessante esse tipo de sobrecarga e eu não a conhecia. Quem puder me esclarecer eu agradeço.
C++ Sobrecarga do operador <<
@arfneto Entendi. Obrigado.
Então @arfneto, eu ainda não consegui entender. Mas eu não poderia declarar a função de sobrecarga dentro da classe? Desse modo eu não teria acesso ao conteúdo da classe? A ideia da sobrecarga desse operador é para a imprimir dados de um objeto direto por cout.
Olá pessoal. Eu estava estudando sobre a sobrecarga do operador de extração(<<) e vi que pra fazer a sobrecarga deve-se usar obrigatoriamente uma função amiga na classe pra onde o operador sobrecarregado será usado. Por que isso é obrigatório? Por que eu não poderia declarar a função dentro da classe?
C++ Sobrecarga do operador ->
Oi @arfneto. Eu sei que, por exemplo: a->b é igual a (*a).b, mas eu não sei como isso funciona de forma mais interna. Como eu não sei como funciona o operador, eu não tenho como saber como funciona a sobrecarga. Eu disse também que eu não entendi o propósito da sobrecarga deste operador porque, de acordo com o exemplo que eu coloquei ai, ele simplesmente me permite fazer algo que eu já posso fazer com o operador ponto.
Olá pessoal. Eu vi um exemplo simples de um código(vou colocar abaixo) que sobrecarrega o operador -> e não consegui entender a "mecânica" do funcionamento. Na verdade eu também não sei como este operador funciona sem estar sobrecarregado, eu só sei usar ele. Também não consegui entender qual é o propósito de se sobrecarregar este operador, visto que ele sobrecarregado só serve para substituir o operador ponto. #include <iostream> class Seta { public: int i; Seta* operator->() { return this; } }; int main() { Seta obj; obj->i = 10; std::cout << "Com ponto: " << obj.i << std::endl << "Com seta: " << obj->i; }
C++ O int da sobrecarga do operador ++
Olá pessoal. Eu vinha estudando sobrecarga de operadores e me deparei com o int que é passado como argumento formal à função de sobrecarga do operador de incremento sufixal. Eu gostaria de saber o porquê da obrigatoriedade do tipo int, já que nas sobrecargas de outros operadores o tipo do parâmetro obedece o tipo do operando?