Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
4Activity
0 of .
Results for:
No results containing your search query
P. 1
11 - Capítulo 8 - Sobrecarga de Operadores

11 - Capítulo 8 - Sobrecarga de Operadores

Ratings: (0)|Views: 707 |Likes:
Published by batokas

More info:

Published by: batokas on Apr 01, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as RTF, PDF, TXT or read online from Scribd
See more
See less

11/12/2012

pdf

text

original

 
Sobrecarga de operadoresObjetivos. Entender como redefinir (sobrecarregar) operadores para trabalhar com novostipos.. Entender como converter objetos de uma classe para outra classe.1 Aprender quando sobrecarregar e quando não sobrecarregar operadores.. . Estudar várias classes interessantes que usam operadoressobrecarregados.. Criar classes Array. String e Date.A grande diferença entre construção e criação é esta: que urna coisa construídasó pode ser amada depois de ser construída; mas urna coisa criada é amadaantes de existi, Gilbert Keith Chesterton, Prefácio a Dickens, Pickwick PapersA sorte está lançada.Júlio César Nosso médico só operaria sefosse realmente necessário. Ele é assim. Se nãoprecisasse do dinheiro, ele não poria as mãos em você.Herb Shriner [:44 . . 1 L8516 c++ COMO PROGRAMARVisão Geral8.1 Introdução8.2 Fundamentos da sobrecarga de operadores8.3 Restrições sobre a sobrecarga de operadores8.4 Funções operador como membros de classe versus como funções friend8.5 Sobrecarregando os operadores de inserção em stream e extração destream8.6 Sobrecarregando operadores unários8.7 Sobrecarregando operadores binários8.8 Estudo de caso: uma classe Array8.9 Convertendo entre tipos8.10 Estudo de caso: uma classe String
 
8.11 Sobrecarregando ++ e --8.12 Estudo de caso: uma classe DateResumo . Terminologia • Erros comuns de programação • Boas práticas deprogramação . Dicas de desempenho • Observações de engenharia de software. Dica de teste e depuração • Exercícios de auto-revisão. Respostas aosexercícios de auto-revisão • Exercícios8.1 IntroduçãoNos Capítulos 6 e 7, introduzimos os fundamentos de classes em C++ e a noçãode tipos de dados abstratos (ADTs). As manipulações sobre objetos de classes(i.e., instâncias de ADTs) eram realizadas enviando-se mensagens (na forma dechamadas a funções membro) para os objetos. Esta notação de chamada defunção é incômoda a certos tipos de classes, especialmente classesmatemáticas. Para estes tipos de classes seria mais agradável usar o ricoconjunto de operadores primitivos de C++ para especificar manipulações deobjetos. Neste capítulo, mostramos como habilitar os operadores de C++ atrabalhar com objetos de uma classe. Este processo é chamado de sobrecargade operadores. E simples e natural se estender C++ com estes novos recursos.Isso também exige um grande cuidado porque, quando usamos mal asobrecarga, ela pode tornar um programa difícil de se entender.o operador « tem várias finalidades em C++ - como o operador de inserção emstream e como o operador de deslocamento à esquerda sobre bits. Este é umexemplo de sobrecarga de operadores. De modo semelhante, » também ésobrecarregado; é usado tanto como o operador de extração de stream como ooperador de deslocamento à direita sobre bits. [Nota: os operadores dedeslocamento à esquerda sobre bits e deslocamento à direita sobre bits sãodiscuti- dos em detalhes no Capítulo 16.] Estes dois operadores sãosobrecarregados na biblioteca de classes de C++. A linguagem C++propriamente dita sobrecarrega + e - . Estes operadores são executados demaneira diferente, dependendo de seu contexto ser a aritmética de inteiros, aaritmética de ponto flutuante e a aritmética de ponteiros.C++ habilita o programador a sobrecarregar a maioria dos operadores paraserem sensíveis ao contexto em que são usados. O compilador gera o códigoapropriado com base na maneira como o operador é usado. Alguns operadoressão freqüentemente sobrecarregados, especialmente o operador de atribuição evários operadores aritméticos, tais como + e - . O trabalho executado por operadores sobrecarregados também pode ser executado por chamadasexplícitas de funções, mas a notação de operador freqüentemente é mais clara.Discutiremos quando devemos usar a sobrecarga de operadores ou não.Mostraremos como sobrecarregar operadores e apresentaremos muitos programas completos usando operadoressobrecarregados.8.2 Fundamentos da sobrecarga de operadoresA programação em C++ é um processo sensível a tipos e enfocado nos tipos. Osprogramadores podem usar tipos primitivos e podem definir novos tipos. Os tiposprimitivos podem ser usados com a rica coleção de operadores de
 
CAPÍTULO 8 - SOBRECARGA DE OPERADORES 517c++. Os operadores fornecem aos programadores uma notação concisa paraexpressar manipulações de objetos de tipos primitivos.Os programadores também podem usar operadores com tipos definidos pelousuário. Embora C++ não permita criar novos operadores, ela permite que amaioria dos operadores existentes sejam sobrecarregados, de forma que,quando estes operadores forem usados com objetos de classe, eles tenham osignificado apropriado aos novos tipos. Este é um dos recursos mais poderososde C++.Observação de engenharia de software 8.1 ______ A sobrecarga de operadores contribuipara a extensibilidade de C++, umdos atributos mais atraentes da linguagem.Boa prática de programação 8.1Use a sobrecarga de operadores quando ela tornar um programa mais claro doque realizar as mesmasoperações com chamadas explícitas de função.Boa prática de programação 8.2Evite o uso excessivo ou incompatível da sobrecarga de operadores, pois istopode tornar um programacríptico e difícil de ler lo • Embora a sobrecarga de operadores possa parecer um recurso exótico, amaioria dos programadores usa regular- mente operadores sobrecarregadosimplicitamente. Por exemplo, o operador adição (+) opera de maneira bastantediferente sobre ints, fioats e doubles. Não obstante, a adição funciona bem comvariáveis do tipo int, float, double e vários outros tipos primitivos, porque ooperador adição (+) já foi sobrecarregado na própria linguagem C++.Os operadores são sobrecarregados escrevendo-se uma definição de função(com um cabeçalho e corpo)rs). como você faria normalmente. exceto pelo fato de que o nome da funçãoagora se torna a palavra-chave operator (na seguida pelo símbolo do operador que está sendo sobrecarregado. Por exemplo, o nome de função operator+ osseria usado para sobrecarregar o operador adição (+).Ico Para usar um operador com objetos de classes, aquele operador deve ser sobrecarregado - com duas exceções. los O operador de atribuição (=) pode ser usado com todas as classes sem sobrecarga explícita. O comportamento rgadefault do operador de atribuição é um atribuição membro a membro dosmembros de dados da classe. Logo vereido mos que tal atribuição membro amembro por default é perigosa para classes com membros do tipo ponteiro;iremossobrecarregar explicitamente o operador de atribuição para tais classes. Ooperador de endereço (&) também pode de ser usado com objetos de qualquer classe sem ser sobrecarregado; ele simplesmente retoma o endereço do objetona Lrn memória. O operador de endereço também pode ser sobrecarregado.ia Sobrecarregar é mais apropriado para classes matemáticas. Estas classesexigem freqüentemente que um iti- conjunto significativo de operadores sejasobrecarregado, para garantir a consistência com o modo com que estas ua-

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->