Presentation is loading. Please wait.

Presentation is loading. Please wait.

Passing Arguments and The Big 5

Similar presentations


Presentation on theme: "Passing Arguments and The Big 5"— Presentation transcript:

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)


Download ppt "Passing Arguments and The Big 5"

Similar presentations


Ads by Google