Passing Arguments and The Big 5

Slides:



Advertisements
Similar presentations
Introduction to Programming Lecture 39. Copy Constructor.
Advertisements

What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
1 Pointers A pointer variable holds an address We may add or subtract an integer to get a different address. Adding an integer k to a pointer p with base.
Computer programming1 Arrays. Computer programming2 ARRAYS Motivation Introduction to Arrays Static arrays Arrays and Functions Arrays, Classes, and typedef.
Review on pointers and dynamic objects. Memory Management  Static Memory Allocation  Memory is allocated at compiling time  Dynamic Memory  Memory.
OOP Spring 2006 – Recitation 31 Object Oriented Programming Spring 2006 Recitation 3.
CS212: Object Oriented Analysis and Design Lecture 10: Copy constructor.
1 Pointers Arrays have a disadvantage: Their size must be known at compile time. We would like the capability to allocate an array-like object of any needed.
1 Overloading Overloading allows a function or operator to have a different meaning depending on the type of objects it is used on. Examples: operator+
Pointers, Variables, and Memory. Variables and Pointers When you declare a variable, memory is allocated to store a value. A pointer can be used to hold.
C++ Memory Overview 4 major memory segments Key differences from Java
Pointers and Dynamic Memory Allocation Copyright Kip Irvine 2003, all rights reserved. Revised 10/28/2003.
Dynamically Allocated Arrays December 4, Skip the Rest of this PowerPoint.
Dynamic memory allocation and Pointers Lecture 4.
The Big Three Based on Weiss “Data Structures and algorithm Analysis CS240 Computer Science II.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
More C++ Features True object initialisation
CS 376b Introduction to Computer Vision 01 / 23 / 2008 Instructor: Michael Eckmann.
Lecture 3 Classes, Structs, Enums Passing by reference and value Arrays.
1 Workin’ with Pointas An exercise in destroying your computer.
Csi2172 class 5 Midterm: June 12. constructor Special method used to create objects of the class Never has a return type. Is called automatically upon.
System Programming Practical Session 7 C++ Memory Handling.
Chapter 1 C++ Basics Review (Section 1.4). Classes Defines the organization of a data user-defined type. Members can be  Data  Functions/Methods Information.
1 Chapter 15-1 Pointers, Dynamic Data, and Reference Types Dale/Weems.
Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Cpt S 223 – Advanced Data Structures C++ Review 2.
CS162 - Topic #6 Lecture: Pointers and Dynamic Memory –Review –Dynamically allocating structures –Combining the notion of classes and pointers –Destructors.
Pointers and References. Pointers & Memory 0x000x040x080x0B0x100x140x180x1B0x20.
1 Ugly Realities The Dark Side of C++ Chapter 12.
Yan Shi CS/SE 2630 Lecture Notes
Hank Childs, University of Oregon
Pointers and Dynamic Arrays
CMSC 341 Lecture 2 – Dynamic Memory and Pointers (Review)
CSE 374 Programming Concepts & Tools
CSE 374 Programming Concepts & Tools
Motivation and Overview
Pointers Psst… over there.
This pointer, Dynamic memory allocation, Constructors and Destructor
Dynamically Allocated Memory
Chapter 14: More About Classes.
Pointers Psst… over there.
CSC 253 Lecture 8.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
CSC 253 Lecture 8.
understanding memory usage by a c++ program
Chapter 15 Pointers, Dynamic Data, and Reference Types
Dynamic Memory A whole heap of fun….
Dynamic Memory Copy Challenge
Chapter 15 Pointers, Dynamic Data, and Reference Types
Dynamic Memory A whole heap of fun….
Dynamic Memory A whole heap of fun….
CISC/CMPE320 - Prof. McLeod
The Big 5 and Lists.
C++ Pointers and Strings
Resource Allocation and Ownership
Passing Arguments and The Big 5
Dynamic Memory A whole heap of fun….
Dynamic Memory.
Pointers and dynamic objects
Dynamic Memory Copy Challenge
The Stack.
Pointers and References
ENERGY 211 / CME 211 Lecture 17 October 29, 2008.
More on C++ G Carl Evans.
C++ Pointers and Strings
Destructors, Copy Constructors & Copy Assignment Operators
Pointers, Dynamic Data, and Reference Types
Destructors, Copy Constructors & Copy Assignment Operators
CS 144 Advanced C++ Programming April 30 Class Meeting
SPL – PS2 C++ Memory Handling.
More on C++ G Carl Evans.
Presentation transcript:

Passing Arguments and The Big 5

Midterm Grades Average of first five code reviews Do not count extra credit Do not scale or drop for joining class late Do not take into account missing grades Are internal only and based on 17.8% of your final grade F < 55 C >= 55 < 70 B >= 70 < 80 A >= 80

Grading Change for Extension In the extension we will be relaxing the grading standard as follows. We will find the worst win rate by scoreing 200 on boards of 10, 20, and 30 size. Then you will be scaled down 10*max(99-winrate, 0)% capped at 80% Examples You have a winrate of 97.4% you would have a down scaling of -16% You have a winrate of 99.2% you would have a down scaling of -0% You have a winrate of 87.3% you would have a down scaling of -80%

Possible Strategy vs Random Pickup several seeds Plant several seeds Wait a several turns (parallel growth) Harvest harvest trees Score a large amount points Repeat until victory

Passing Arguments by Value Pass to the function a copy of a variable Advantages Safe – the variable will not be changed in the calling context Disadvantages Slow – copying can be slow to copy a large objects as a variable Arrays Not passed by value

Passing Arguments by Pointer Pass to the function a copy of the address of a variable Advantages Flexible – can change the value of the object Fast – only need to copy a pointer not the whole object Disadvantages Unsafe – can change the value of the variable in the calling function Complex – the variable is a pointer rather then and needs * or -> to access Arrays Always passed as a pointer since the name of an array is a pointer

Reference Variables Not pointers C++ Reference Variables Can not be null or uninitialized C++ Reference Variables Declare like pointers but use & rather then * They "refer" to another variable, but act like a variable Must be initialized when created so can never be null int my_int = 7; int &my_ref = my_int; my_ref = 8; cout << my_int << endl;

Passing Arguments by Reference Pass to the function a reference to a variable Advantages Flexible – can change the value of the object Fast – only need to copy an address not the whole object Disadvantages Unsafe – can change the value of the variable in the calling function Confusing – can not tell the difference at the call site Const Ref Safe like value but fast like a pointer

Return Values Advantages Disadvantages Safe – Will always work correctly Disadvantages Slow – If a large object must be copied it could be slow With C++11 usually avoided more so with C++14

Return Pointers Advantages Disadvantages Allocations – Allows returning of heap allocated objects Disadvantages Unsafe – returning a stack address no longer be valid after the return

Return Reference Advantages Disadvantages Use Fast – always fast since only copying an address Disadvantages Unsafe – returning a reference to a stack variable will no longer be valid after the return Use Returning values from outside the function

What happens? void fn(int x) { x = 10; } int main() { int x = 200; fn(x); cout << x; What probably happens? 10 printed 200 printed Won't compile Some unknown value printed Segfault and crash

What happens? void fn(int &x) { x = 10; } int main() { int x = 200; fn(x); cout << x; What probably happens? 10 printed 200 printed Won't compile Some unknown value printed Segfault and crash

What happens? void fn(int *x) { x = 10; } int main() { int x = 200; fn(x); cout << x; What probably happens? 10 printed 200 printed Won't compile Some unknown value printed Segfault and crash

What happens? void fn(int *x) { x = 10; } int main() { int x = 200; fn(&x); cout << x; What probably happens? 10 printed 200 printed Won't compile Some unknown value printed Segfault and crash

Classes – No Internal "new" Member variables Methods Constructor Rule of Zero

Case Study: StringHolder class StringHolder { std::string *string_; public: StringHolder() : string_(nullptr) {}; StringHolder(const char *initial_string); const char* c_str() const noexcept; void ChangeString(const char *input_string); };

Classes – Containers Use "new" Rule of Zero won't work Deep vs Shallow Copy

Rule of Three – Copy Assignment Operator StringHolder& operator=(const StringHolder &source)

Rule of Three - Copy Constructor StringHolder(const StringHolder &source)

Rule of Three - Destructor ~StringHolder()

Rule of Three vs Rule of Five Rule of five (move semantics new with C++11) Move Constructor Move Assignment Operator rvalue reference && Can bind to a temporary (rvalue)

Rule of Three - Move Constructor StringHolder(StringHolder&& source)

Rule of Three – Move Assignment Operator StringHolder& operator=(StringHolder&& source)