lecture4 - linked lists

lecture4 - linked lists - Monday, January 12 th Resource...

Info iconThis preview shows pages 1–7. Sign up to view the full content.

View Full Document Right Arrow Icon
Monday, January 12 th   Resource Management, Part 2 Assignment Operators Basic Linked Lists Insertion, deletion, traversals, etc. Advanced Linked Lists Tail Pointers Doubly-linked Lists
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Time for your favorite game! Programming Language Inventor  Or Serial Killer See if you can guess who uses a keyboard and who uses a  chainsaw!
Background image of page 2
The Assignment Operator We just learned how to  initialize the value of  a  new class variable  to the value  of an  existing variable .   main() { Circ foo(1,2,3); Circ bar(4,5,6); bar = foo ; } Now lets learn how to set the value of an  existing variable  to the value of an  another existing variable . In this example, both  foo  and  bar  have  been constructed. Both have had their member variables  initialized. Then we set  bar  equal to  foo .
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
The Assignment Operator main() { Circ foo(1,2,3); Circ bar(4,5,6); bar = foo ; } In this case, the  copy constructor  is  NOT  used to copy values from  foo  to  bar . Instead, a special member function called an  assignment operator  is used. If you don’t define your own  assignment  operator Then C++ provides a default version that  just copies each of the members. foo    m_x m_y   m_rad 1 2 3 bar    m_x m_y   m_rad 4 5 6 1 2 3 Lets see how to define our own  assignment operator .
Background image of page 4
class Circ { public: Circ(float x, float y, float r) { m_x = x; m_y = y; m_rad = r; } float GetArea(void) { return(3.14159*m_rad*m_rad); } private: float m_x, m_y, m_rad; }; void Assign(const Circ &src) { m_x = src.m_x; m_y = src.m_y; m_rad = src.m_rad; } The Assignment Operator The syntax for an assignment operator is a bit confusing. So lets define a simpler version  first… Here’s how we’d use our new  function. main() { Circ foo(1,2,3); Circ bar(4,5,6); bar.Assign(foo) ; } // same as  bar = foo; class Circ { ... void Assign( const Circ &src ) { m_x = src.m_x; m_y = src.m_y; m_rad = src.m_rad; } ... private: m_x m_y m_rad } bar         4 Hmmm. . This looks familiar,  doesn’t it? What does it remind you of?     class Circ { ... void Assign( const Circ &src ) { m_x = src.m_x; m_y = src.m_y; m_rad = src.m_rad; } ... private: m_x m_y m_rad } foo        1          2             3 Note : our “ bar ” variable already  had  m_x  set to  4 , and now we’re  replacing its original value with  foo’s  m_x  value of  1 . 1 6 5 2 3 When we’re done,  bar  is a  perfect clone of  foo !
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
class Circ { public: Circ(float x, float y, float r) { m_x = x; m_y = y; m_rad = r; } float GetArea(void) { return(3.14159*m_rad*m_rad); } private: float m_x, m_y, m_rad; }; The Assignment Operator void Assign (const Circ &src) { m_x = src.m_x; m_y = src.m_y; m_rad = src.m_rad; } operator= 1. The function name is  operator= Now lets see what a real  assignment operator  looks like.
Background image of page 6
Image of page 7
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 63

lecture4 - linked lists - Monday, January 12 th Resource...

This preview shows document pages 1 - 7. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online