《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 8 Operator Overloading, Friends, and References

Chapter 8 ABSOLUTE C++ Operator Overloading, Friends, and References WALTER SAVITCH SECOND EDITION PEARSON Copyright2006 Pearson Addison-Wesley All rights reserved
Chapter 8 Operator Overloading, Friends, and References

Learning Objectives Basic Operator Overloading ◆Unary operators ◆As member functions Friends and Automatic Type Conversion Friend functions,friend classes Constructors for automatic type conversion References and More Overloading 。> ◆Operators:=,l,++,- Copyright006 Pearson Addison-Wesley.All rights reserved. 8-2
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-2 Learning Objectives ¨ Basic Operator Overloading ¨ Unary operators ¨ As member functions ¨ Friends and Automatic Type Conversion ¨ Friend functions, friend classes ¨ Constructors for automatic type conversion ¨ References and More Overloading ¨ > ¨ Operators: = , [], ++ , -

Operator Overloading Introduction Operators +,-%==etc. Really just functions! Simply "called"with different syntax: X+7 "+"is binary operator with x 7 as operands We "like"this notation as humans ◆Think of it as: +(X,7) "+is the function name ◆x,7 are the arguments Function"+"returns "sum"of it's arguments Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-3
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-3 Operator Overloading Introduction ¨ Operators + , -, %, == , etc. ¨ Really just functions! ¨ Simply "called" with different syntax: x + 7 ¨ "+" is binary operator with x & 7 as operands ¨ We "like" this notation as humans ¨ Think of it as: +(x, 7) ¨ "+" is the function name ¨ x, 7 are the arguments ¨ Function "+" returns "sum" of it’s arguments

Operator Overloading Perspective ◆Built-in operators ◆e.g,+,=,%,=,1,* Already work for C++built-in types In standard "binary"notation ◆Ve can overload them! ◆To work with OUR types! To add "Chair types",or "Money types" As appropriate for our needs In"notation"we're comfortable with Always overload with similar "actions"! Copyright Pearson Addison-Wesley.All rights reserved. 8-4
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-4 Operator Overloading Perspective ¨ Built-in operators ¨ e.g., + , -, = , %, == , /, * ¨ Already work for C++ built-in types ¨ In standard "binary" notation ¨ We can overload them! ¨ To work with OUR types! ¨ To add "Chair types" , or "Money types" ¨ As appropriate for our needs ¨ In "notation" we’re comfortable with ¨ Always overload with similar "actions"!

Overloading Basics Overloading operators VERY similar to overloading functions Operator itself is "name"of function Example Declaration: const Money operator +const Money&amount1, const Money&amount2); Overloads for operands of type Money Uses constant reference parameters for efficiency Returned value is type Money Allows addition of "Money"objects Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-5
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-5 Overloading Basics ¨ Overloading operators ¨ VERY similar to overloading functions ¨ Operator itself is "name" of function ¨ Example Declaration: const Money operator +( const Money& amount1, const Money& amount2); ¨ Overloads + for operands of type Money ¨ Uses constant reference parameters for efficiency ¨ Returned value is type Money ¨ Allows addition of "Money" objects

Overloaded "+ Given previous example: Note:overloaded "+NOT member function Definition is "more involved"than simple "add" Requires issues of money type addition Must handle negative/positive values Operator overload definitions generally very simple Just perform "addition"particular to "your"type Copyright006 Pearson Addison-Wesley.All rights reserved. 8-6
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-6 Overloaded "+" ¨ Given previous example: ¨ Note: overloaded "+" NOT member function ¨ Definition is "more involved" than simple "add" ¨ Requires issues of money type addition ¨ Must handle negative/positive values ¨ Operator overload definitions generally very simple ¨ Just perform "addition" particular to "your" type

Money "+Definition: Display 8.1 Operator Overloading ◆ Definition of "+"operator for Money class: 52 const Money operator +(const Money&amount1,const Money&amount2) 53 54 int allCents1 amount1.getCents()+amount1.getDollars()*100; 5 int allCents2 amount2.getCents()+amount2.getDollars()*100; 56 int sumAllCents allCents1 allCents2; 57 int absAllCents abs(sumAllCents);//Money can be negative. 5 int finalDollars absAllCents/100; 59 int finalCents absAllCents%100; 60 if (sumAllCents 0) If the return 61 statements finalDollars =-finalDollars; puzzle you,see 63 finalCents =-finalCents; the tip entitled 6 A Constructor Can Return an 65 return Money(finalDollars,finalCents); Object. 66 2 Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-7
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-7 Money "+" Definition: Display 8.1 Operator Overloading ¨ Definition of "+" operator for Money class:

Overloaded "== Equality operator,= Enables comparison of Money objects ◆Declaration: bool operator ==(const Money&amount1, const Money&amount2): .Returns bool type for true/false equality Again,it's a non-member function (like "+overload) Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-8
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-8 Overloaded "==" ¨ Equality operator, == ¨Enables comparison of Money objects ¨Declaration: bool operator ==(const Money& amount1, const Money& amount2); ¨Returns bool type for true/false equality ¨Again, it’s a non-member function (like "+" overload)

Overloaded "==for Money: Display 8.1 Operator Overloading Definition of "=="operator for Money class: 83 bool operator ==(const Money&amount1,const Money&amount2) 84 85 return ((amount1.getDollars()==amount2.getDollars()) 86 &(amount1.getCents()=amount2.getCents())) 87 Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-9
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-9 Overloaded "==" for Money: Display 8.1 Operator Overloading ¨ Definition of "==" operator for Money class:

Constructors Returning Objects Constructor a "void"function? We "think"that way,but no ◆A"special'"function With special properties ◆CAN return a value! Recall return statement in "+"overload for Money type: return Money(finalDollars,finalCents); ◆Returns an"invocation'"of Money class! So constructor actually "returns"an object! Called an "anonymous object" Copyright 2006 Pearson Addison-Wesley.All rights reserved. 8-10
Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 8-10 Constructors Returning Objects ¨ Constructor a "void" function? ¨ We "think" that way, but no ¨ A "special" function ¨ With special properties ¨ CAN return a value! ¨ Recall return statement in "+" overload for Money type: ¨ return Money(finalDollars, finalCents); ¨ Returns an "invocation" of Money class! ¨ So constructor actually "returns" an object! ¨ Called an "anonymous object
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 7 Constructors and Other Tools.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 6 Structures and Classes.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 2 Flow of Control.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 3 Function Basics.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 1 C++ Basics.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 4 Parameters and Overloading.ppt
- 西安邮电大学:《信息论与编码》课程教学课件(PPT讲稿)第三章.ppt
- 西安邮电大学:《信息论与编码》课程教学课件(PPT讲稿)第二章 信源与信息熵.ppt
- 西安邮电大学:《信息论与编码》课程教学课件(PPT讲稿)第一章 绪论(主讲:王军选).ppt
- 《信息论与编码》课程教学资源(作业习题)第三章 信道与信道容量(含解答).pdf
- 《信息论与编码》课程教学资源(作业习题)自测题无答案.pdf
- 《信息论与编码》课程教学实验指导书.pdf
- 《信息论与编码》课程教学大纲 Element of Information Theory and Coding B.pdf
- 《信息论与编码》课程教学大纲 Element of Information Theory and Coding A.pdf
- 《信息安全概论》课程教学资源(PPT课件)第9章 信息安全标准与法律法规.ppt
- 《信息安全概论》课程教学资源(PPT课件)第2章 信息保密技术.ppt
- 《信息安全概论》课程教学资源(PPT课件)第7章 网络安全技术.ppt
- 《信息安全概论》课程教学资源(PPT课件)第8章 信息安全管理.ppt
- 《信息安全概论》课程教学资源(PPT课件)第6章 访问控制技术.ppt
- 《信息安全概论》课程教学资源(PPT课件)第5章 操作系统与数据库安全.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 5 Arrays.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 11 Separate Compilation and Namespaces.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 12 Streams and File IO.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 10 Pointers and Dynamic Arrays.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 9 Strings.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 13 Inheritance.ppt
- 《C++面向对象程序设计》课程教学资源(PPT课件)Chapter 14 Polymorphism and Virtual Functions.ppt
- 《微机技术及应用》课程教学大纲 Microcmputer Technology and aplications.doc
- 《微型计算机技术及应用》课程电子教案(PPT教学课件,共十五章,完整版).pptx
- 《计算机导论》课程教学大纲 Computer Concepts.pdf
- 《计算机导论》课程教学课件(英文讲稿)1-a-Computer History+ Di Devices.pdf
- 《计算机导论》课程教学课件(英文讲稿)1-b-Digital Data Representation.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-a-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)2-b-Computer Hardware.pdf
- 《计算机导论》课程教学课件(英文讲稿)3-a-b-Computer Software.pdf
- 《计算机导论》课程教学课件(英文讲稿)4- operating system.pdf
- 《计算机导论》课程教学课件(英文讲稿)4-a- File mangement.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-a- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)5-b- LANS_WANS.pdf
- 《计算机导论》课程教学课件(英文讲稿)6-a- The Internet.pdf