more c++ : vectors, classes, inheritance, templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. ·...
TRANSCRIPT
![Page 1: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/1.jpg)
More C++ :
Vectors, Classes, Inheritance,
Templates
with content from cplusplus.com, codeguru.com
![Page 2: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/2.jpg)
Vectors
2
−vectors in C++
−basically arrays with enhancements
− indexed similarly
−contiguous memory
−some changes
−defined differently
−can be resized without explicit memory allocation
−contains methods, such as size()
![Page 3: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/3.jpg)
Vectors
3
−using vectors
−must include <vector>
− template, so must be instantiated with type
−qualified with std::
−can be simplified in small projects
![Page 4: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/4.jpg)
C++ Standard Arrays vs. Vectors
4
![Page 5: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/5.jpg)
Vector Length
5
−previous program does not check for valid index, which
enhances performance
−using at function will check index
![Page 6: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/6.jpg)
Vector Length
6
−vectors can grow
−certain amount of space allocated initially
−once that space runs out, new space is allocated and the
values are copied over
![Page 7: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/7.jpg)
Vector Size
7
−use pushback(el) to grow the size dynamically
−use resize to set or reset the size of the array
![Page 8: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/8.jpg)
Vector Size
8
−use the size() method for loops
for (i = 0; i < array.size(); i++)
array[i] = 0;
![Page 9: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/9.jpg)
Classes
9
−classes
− fancy struct’s
−expanded concept of data structures
−__________
−_____________(functions)
−object
− instantiation of a ___________
−type/variable class/object
−defined with keyword class (or struct)
![Page 10: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/10.jpg)
Classes
10
−members are listed under ________________ specifiers
−private
−members accessible only from within the class
−protected
−members accessible to class or ____________ classes
−public
−members accessible anywhere the object is visible
−by default, access is ______________
![Page 11: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/11.jpg)
Classes
11
−example
−declares a class, Rectangle
−declares an object, rect
−class contains 4 members
−2 private data
−2 public methods (declarations only, not definitions)
![Page 12: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/12.jpg)
Classes
12
−members are accessed through ______________
−_____________ methods can be accessed directly using .
operator
−similar to struct’s
![Page 13: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/13.jpg)
Classes
13
− example
notes:
declaration vs. definition
inline function
encapsulation
data hiding
− output
area: 12
![Page 14: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/14.jpg)
Classes
14
− example with 2 variables
notes:
each object has its own set
of data/methods
no parameters needed for
call to area
− output rect area: 12
rectb area: 30
![Page 15: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/15.jpg)
Classes
15
−what would happen if we called area before setting values?
−undetermined result
− constructors
−automatically called when a new object is ____________
− initializes values, allocates ______________, etc.
−constructor name same as class name
−no return type
−cannot be called ________________
![Page 16: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/16.jpg)
Classes
16
− example
notes:
results same as before
set_values omitted
values passed to constructor
− output rect area: 12
rectb area: 30
![Page 17: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/17.jpg)
Classes
17
−constructors can be _______________________
−different number of parameters
−different parameter types
−_______________ default constructor defined if no other
constructor defined
− takes no parameters
−called when object is declared but no parameters are
passed to the constructor
−cannot call default constructor with parentheses
−represents a _______________ declaration
![Page 18: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/18.jpg)
Classes
18
−member initialization
−can be done in constructor body or member ___________
−_________________ can be defined normally
−or with member initialization
![Page 19: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/19.jpg)
Classes
19
− for _____________ types, doesn’t matter if initialization is
defined or by default
− for member objects (whose type is a ___________)
− if not initialized after the colon, they are default-
constructed
−default construction may not be possible if no default
constructor defined for class
−use member initialization list instead
![Page 20: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/20.jpg)
Classes
20
−example
Cylinder class has member of type class Circle and needs
to call Circle constructor in member initialization list
![Page 21: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/21.jpg)
Classes
21
−operator overloading
−allows operators, such as + or *, to be defined for user-
defined types
−defined like member functions, but prepended with keyword operator
![Page 22: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/22.jpg)
Classes
22
−operator overloading example
example: equivalent
![Page 23: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/23.jpg)
Classes
23
−this
−pointer to ____________________________
−used within a class method to refer to the object that
called it
− example
Rectangle::Rectangle (int width, int height) {
this -> width = width;
this -> height = height;
}
![Page 24: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/24.jpg)
Classes
24
− templates
−parameterized class
−can be used to store elements of type int
−or type float
![Page 25: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/25.jpg)
Classes
25
−destructor
−opposite of constructor
−called when an object’s _____________________ ends
−performs ______________, such as memory deallocation
− returns nothing, not even void
−name same as class name, but preceded by ~
− implicit default destructor provided if none defined
![Page 26: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/26.jpg)
Classes
26
−destructor example
![Page 27: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/27.jpg)
Inheritance
27
− inheritance
−allows classes to be ____________________
−_________ classes retain characteristics of the base class
−avoids replicated code by allowing common properties to
be contained in one class and then used by other classes
−Polygon contains common members; Rectangle and
Triangle contain common members plus specific
features
![Page 28: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/28.jpg)
Inheritance
28
− inheritance example
−derived classes contain
width, height,
set_values
−output
![Page 29: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/29.jpg)
Inheritance
29
− inheritance
−access types and inheritance
− inherited members have same access permissions as in
base class
since
![Page 30: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/30.jpg)
Virtual Methods
30
−virtual methods
−can be redefined in _____________ classes, while
preserving its calling signature
−declared with keyword virtual
![Page 31: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/31.jpg)
Virtual Methods
31
−virtual method example
area declared virtual –
derived classes will
redefine it
![Page 32: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/32.jpg)
Virtual Methods
32
−virtual methods
− if virtual keyword removed, all derived class calls to
area method through pointers to base class would return
0
−virtual methods redefined in derived classes
−non-virtual methods can also be redefined in derived
classes
−but, if virtual, a _____________ to the base class can
access the redefined virtual method in the derived class
−a class that declares or inherits a virtual function is
_____________________
−note that Poly is a class, too, and objects can be
declared with it
![Page 33: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/33.jpg)
Virtual Methods
33
−abstract base class
−similar to base class in previous example
−can only be used as base classes
−can have virtual methods without ________________
−pure virtual function
−appended with =0
![Page 34: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/34.jpg)
Classes
34
−abstract base class
−cannot be used to declare ______________
−can be used to create _______________ to it and take
advantage of polymorphic features
![Page 35: More C++ : Vectors, Classes, Inheritance, Templatestadavis/cs303/cpp2sf.pdf · 2017. 6. 20. · Inheritance 27 −inheritance −allows classes to be _____ −_____ classes retain](https://reader035.vdocument.in/reader035/viewer/2022062607/604907e370f6e453a0435c90/html5/thumbnails/35.jpg)
Inheritance
35
−abstract base class example