Download presentation
Presentation is loading. Please wait.
1
Passing Arguments and The Big 5
2
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
3
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
4
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;
5
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
6
How hard was week 8 code review assignment?
Easy Moderate Challenging Unreasonable
7
How long did week 8 assignment take?
Less than 3 hours 3 to 6 hours 6 to 9 hours 9 to 12 hours More than 12 hours
8
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
9
Return Pointers Advantages Disadvantages
Allocations – Allows returning of heap allocated objects Disadvantages Unsafe – returning a stack address no longer be valid after the return
10
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
11
Classes – No Internal "new"
Member variables Methods Constructor Rule of Zero
12
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); };
13
Classes – Containers Use "new"
Rule of Zero won't work Deep vs Shallow Copy
14
Rule of Three – Copy Assignment Operator
StringHolder& operator=(const StringHolder &source)
15
Rule of Three - Copy Constructor
StringHolder(const StringHolder &source)
16
Rule of Three - Destructor
~StringHolder()
17
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)
18
Rule of Three - Move Constructor
StringHolder(StringHolder&& source)
19
Rule of Three – Move Assignment Operator
StringHolder& operator=(StringHolder&& source)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.