Implementing Abstractions
|
|
- Norah Glenn
- 6 years ago
- Views:
Transcription
1 Implementing Abstractions
2 Pointers A pointer is a C++ variable that stores the address of an object. Given a pointer to an object, we can get back the original object. Can then read the object's value. Can then write the object's value. Think of a pointer as a URL for the object.
3 Pointers Setting up a pointer requires two steps: Declare the pointer variable. Initialize the pointer variable to refer to some object. These are all separate steps, and forgetting any one can result in hard-tofind bugs. Once the pointer is set up, we can use it to read and write the object it refers to.
4 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n;
5 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n;
6 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n;
7 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1
8 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1
9 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
10 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
11 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
12 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
13 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
14 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
15 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
16 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
17 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
18 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
19 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
20 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
21 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
22 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; m = 160; 2 ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
23 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; m = 160; 2 ptr1 = ptr2; *ptr1 = m / n; ptr1 ptr2
24 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; m = 160; 2 ptr1 = ptr2; ptr1 = ptr2; ptr1 ptr2
25 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; m = 160; 2 ptr1 = ptr2; ptr1 = ptr2; ptr1 ptr2
26 Pointers, Visually int m = 137; int n = 42; int* ptr1 = &m; int* ptr2 = &n; m n *ptr1 = 2718; *ptr2 = *ptr1; m = 160; 2 ptr1 = ptr2; ptr1 = ptr2; ptr1 ptr2 Assigning Assigning one one pointer pointer to to another another changes changes which which object object is is being being pointed pointed at. at. It It does does not not change change the the value value of of the the pointee. pointee.
27 Why would we ever want to do this?
28 Allocating Multiple Objects One of the most important applications of pointers is dynamic memory allocation, the ability to construct brand-new objects at runtime. To allocate an array of n objects of type T, use the syntax new T[n] This returns a pointer to the array of elements you have just allocated.
29 Dynamic Memory Allocation int* ptr; ptr = new int; *ptr = 137;
30 Dynamic Memory Allocation int* ptr; ptr = new int;? *ptr = 137; ptr
31 Dynamic Memory Allocation int* ptr; ptr = new int[5];? *ptr = 137; ptr
32 Dynamic Memory Allocation int* ptr; ptr = new int[5];? *ptr = 137; ptr???????????????
33 Dynamic Memory Allocation int* ptr; ptr = new int[5]; *ptr = 137; ptr???????????????
34 Dynamic Memory Allocation int* ptr; ptr = new int[5]; ptr[0] = 137; ptr???????????????
35 Dynamic Memory Allocation int* ptr; ptr = new int[5]; ptr[0] = 137; ptr 137????????????
36 Dynamic Memory Allocation int* ptr; ptr = new int[5]; ptr[0] = 137; ptr[2] = 42; ptr 137????????????
37 Dynamic Memory Allocation int* ptr; ptr = new int[5]; ptr[0] = 137; ptr[2] = 42; ptr 137??? 42??????
38 Notes on Dynamic Arrays Arrays in C++ do not know their own size. You must store this separately. Arrays in C++ do not have boundschecking. You must make sure not to read off the end of the array. Arrays in C++ cannot be resized.
39 Cleaning Up Unlike other languages like Java, in C++, you are responsible for deallocating any memory allocated with new[]. You can deallocate memory with the delete[] operator: delete[] ptr; This destroys the array pointed at by the given pointer, not the pointer itself.
40 Cleaning Up Unlike other languages like Java, in C++, you are responsible for deallocating any memory allocated with new[]. You can deallocate memory with the delete[] operator: delete[] ptr; This destroys the array pointed at by the given pointer, not the pointer itself. ptr
41 Cleaning Up Unlike other languages like Java, in C++, you are responsible for deallocating any memory allocated with new[]. You can deallocate memory with the delete[] operator: delete[] ptr; This destroys the array pointed at by the given pointer, not the pointer itself. ptr
42 Cleaning Up Unlike other languages like Java, in C++, you are responsible for deallocating any memory allocated with new[]. You can deallocate memory with the delete[] operator: delete[] ptr; This destroys the array pointed at by the given pointer, not the pointer itself. ptr???
43 Words of Caution C++ has few of the safety features present in Java. All of the following result in undefined behavior in C++: Reading or writing through a pointer that you haven't initialized. Reading or writing through a pointer to memory that you have deallocated. Reading off the end of an array. Treating a non-array like an array.
44 Implementing Stack
45 Implementing Stack Last time, we saw how to implement RandomBag in terms of Vector. We could also implement Stack in terms of Vector. What if we wanted to implement the Stack without relying on any other collections? Let's build the stack directly!
46 Storing Values Right now, if we need to store multiple values, we can Declare a whole bunch of variables, Use a collections class, or Dynamically allocate space.
47 Storing Values Right now, if we need to store multiple values, we can Declare a whole bunch of variables, Use a collections class, or Dynamically allocate space.
48 Storing Values Right now, if we need to store multiple values, we can Declare a whole bunch of variables, Use a collections class, or Dynamically allocate space.
49 An Initial Idea A bounded stack. Allocate a fixed-size array for elements. Add elements to the array when they're pushed. Remove elements from the array when they're popped. Report an error if we exceed the size of the array.
50 An Initial Idea element array allocated length logical length 4 0
51 An Initial Idea 137 element array allocated length logical length 4 1
52 An Initial Idea element array allocated length logical length 4 2
53 An Initial Idea element array allocated length logical length 4 3
54 An Initial Idea element array allocated length logical length 4 4
55 An Initial Idea element array allocated length logical length 4 3
56 An Initial Idea element array allocated length logical length 4 2
57 An Initial Idea element array allocated length logical length 4 3
58 An Initial Idea element array allocated length logical length 4 4
59 Let's Code it Up!
60 Constructors A constructor is a special member function used to set up the class before it is used. The constructor is automatically called when the object is created. Syntax: The constructor for a class named ClassName has signature ClassName(args);
61 Destructors A destructor is a special member function responsible for cleaning up an object's memory. Automatically called when a local variable goes out of scope. Automatically called if you delete a pointer to an object. Syntax: The constructor for a class named ClassName has signature ~ClassName();
In Java we have the keyword null, which is the value of an uninitialized reference type
+ More on Pointers + Null pointers In Java we have the keyword null, which is the value of an uninitialized reference type In C we sometimes use NULL, but its just a macro for the integer 0 Pointers are
More informationQUIZ Friends class Y;
QUIZ Friends class Y; Is a forward declaration neeed here? QUIZ Friends QUIZ Friends - CONCLUSION Forward (a.k.a. incomplete) declarations are needed only when we declare member functions as friends. They
More informationQUIZ on Ch.5. Why is it sometimes not a good idea to place the private part of the interface in a header file?
QUIZ on Ch.5 Why is it sometimes not a good idea to place the private part of the interface in a header file? Example projects where we don t want the implementation visible to the client programmer: The
More informationCS 230 Programming Languages
CS 230 Programming Languages 11 / 20 / 2015 Instructor: Michael Eckmann Questions/comments? Chapter 6 Arrays Pointers Today s Topics We all know what arrays are. Design issues Legal types for subscripts
More informationThe C++ Object Lifecycle. EECS 211 Winter 2019
The C++ Object Lifecycle EECS 211 Winter 2019 2 Initial code setup $ cd eecs211 $ curl $URL211/lec/09lifecycle.tgz tar zx $ cd 09lifecycle 3 Road map Owned string type concept Faking it An owned string
More informationDynamic Memory Allocation
Dynamic Memory Allocation Lecture 15 COP 3014 Fall 2017 November 6, 2017 Allocating memory There are two ways that memory gets allocated for data storage: 1. Compile Time (or static) Allocation Memory
More informationIterator: A way to sequentially access ( traverse ) each object in a container or collection. - Access is done as needed, not necessarily at once.
CSE 12, Week Seven, Lecture One Iterator: A way to sequentially access ( traverse ) each object in a container or collection - Access is done as needed, not necessarily at once. - Implemented by a private
More informationAnd Even More and More C++ Fundamentals of Computer Science
And Even More and More C++ Fundamentals of Computer Science Outline C++ Classes Special Members Friendship Classes are an expanded version of data structures (structs) Like structs, the hold data members
More informationCS32 - Week 1. Umut Oztok. June 24, Umut Oztok CS32 - Week 1
CS32 - Week 1 Umut Oztok June 24, 2016 Administration Email:umut@ucla.edu Office hours: R 09:30am-12:30pm (BH 4663) Constructor Special member function to initialize an instance of a class. Called whenever
More informationProgramming Language Concepts Scoping. Janyl Jumadinova January 31, 2017
Programming Language Concepts Scoping Janyl Jumadinova January 31, 2017 Scope Rules A scope is a program section of maximal size in which no bindings change, or at least in which no re-declarations are
More informationPointers, Dynamic Data, and Reference Types
Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple
More informationKOM3191 Object Oriented Programming Dr Muharrem Mercimek OPERATOR OVERLOADING. KOM3191 Object-Oriented Programming
KOM3191 Object Oriented Programming Dr Muharrem Mercimek 1 OPERATOR OVERLOADING KOM3191 Object-Oriented Programming KOM3191 Object Oriented Programming Dr Muharrem Mercimek 2 Dynamic Memory Management
More informationPointers II. Class 31
Pointers II Class 31 Compile Time all of the variables we have seen so far have been declared at compile time they are written into the program code you can see by looking at the program how many variables
More informationLecture 14. No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions?
Lecture 14 No in-class files today. Homework 7 (due on Wednesday) and Project 3 (due in 10 days) posted. Questions? Friday, February 11 CS 215 Fundamentals of Programming II - Lecture 14 1 Outline Static
More informationPointers and Terminal Control
Division of Mathematics and Computer Science Maryville College Outline 1 2 3 Outline 1 2 3 A Primer on Computer Memory Memory is a large list. Typically, each BYTE of memory has an address. Memory can
More informationCS201 Some Important Definitions
CS201 Some Important Definitions For Viva Preparation 1. What is a program? A program is a precise sequence of steps to solve a particular problem. 2. What is a class? We write a C++ program using data
More informationDynamic Allocation in C
Dynamic Allocation in C C Pointers and Arrays 1 The previous examples involved only targets that were declared as local variables. For serious development, we must also be able to create variables dynamically,
More informationMidterm Review. PIC 10B Spring 2018
Midterm Review PIC 10B Spring 2018 Q1 What is size t and when should it be used? A1 size t is an unsigned integer type used for indexing containers and holding the size of a container. It is guarenteed
More informationC++ PROGRAMMING LANGUAGE: CLASSES. CAAM 519, CHAPTER 13
C++ PROGRAMMING LANGUAGE: CLASSES. CAAM 519, CHAPTER 13 This chapter focuses on introducing the notion of classes in the C++ programming language. We describe how to create class and use an object of a
More informationC++ and OO. l C++ classes and OO. l More Examples. l HW2. C++ for C Programmers by Ira Pohl
C++ and OO C++ classes and OO More Examples HW2 Objects C++ and OO What happens with a declaration int i, j = 3; Declares; allocates ; initializes For a simple native type this happens automatically via
More information04-17 Discussion Notes
04-17 Discussion Notes PIC 10B Spring 2018 1 RAII RAII is an acronym for the idiom Resource Acquisition is Initialization. What is meant by resource acquisition is initialization is that a resource should
More informationMemory Leak. C++: Memory Problems. Memory Leak. Memory Leak. Pointer Ownership. Memory Leak
Memory Leak C++ Memory Problems or When Good Memory Goes Bad A bug in a program that prevents it from freeing up memory that it no longer needs. As a result, the program grabs more and more memory until
More information05-01 Discussion Notes
05-01 Discussion Notes PIC 10B Spring 2018 1 Exceptions 1.1 Introduction Exceptions are used to signify that a function is being used incorrectly. Once an exception is thrown, it is up to the programmer
More informationLaunchpad Lecture -10
Saturday, 24 September Launchpad Lecture -10 Dynamic Allocation, Object Oriented Programming-1 Prateek Narang 2 Recap 1. How to define pointers? 2. Address of Operator? 3. Dereference operator? 4. Arithmetic
More informationStackVsHeap SPL/2010 SPL/20
StackVsHeap Objectives Memory management central shared resource in multiprocessing RTE memory models that are used in Java and C++ services for Java/C++ programmer from RTE (JVM / OS). Perspectives of
More informationCSE 303: Concepts and Tools for Software Development
CSE 303: Concepts and Tools for Software Development Hal Perkins Autumn 2008 Lecture 24 Introduction to C++ CSE303 Autumn 2008, Lecture 24 1 C++ C++ is an enormous language: All of C Classes and objects
More informationClasses and Pointers: Some Peculiarities
Classes and Pointers: Some Peculiarities Dr. Mardé Helbig Dr. Mardé Helbig, COS 110 1 Issues with Destructor ~ void print Which method is the constructor? How is the constructor different from other methods?
More informationPOINTERS - Pointer is a variable that holds a memory address of another variable of same type. - It supports dynamic allocation routines. - It can improve the efficiency of certain routines. C++ Memory
More informationToday s lecture. Pointers/arrays. Stack versus heap allocation CULTURE FACT: IN CODE, IT S NOT CONSIDERED RUDE TO POINT.
Pointers/arrays Mechanics, syntax Underlying memory model Array indexing == pointer arithmetic As parameters Stack versus heap allocation Stack declaration, scope, lifetime Heap allocation/deallocation
More informationAssignment 1: grid. Due November 20, 11:59 PM Introduction
CS106L Fall 2008 Handout #19 November 5, 2008 Assignment 1: grid Due November 20, 11:59 PM Introduction The STL container classes encompass a wide selection of associative and sequence containers. However,
More informationCOMP6771 Advanced C++ Programming
1.... COMP6771 Advanced C++ Programming Week 5 Part One: Exception Handling 2016 www.cse.unsw.edu.au/ cs6771 2.... Memory Management & Exception Handling.1 Part I: Exception Handling Exception objects
More informationCS1150 Principles of Computer Science Methods
CS1150 Principles of Computer Science Methods Yanyan Zhuang Department of Computer Science http://www.cs.uccs.edu/~yzhuang CS1150 UC. Colorado Springs Opening Problem Find the sum of integers from 1 to
More informationDynamic Data Structures
Dynamic Data Structures We have seen that the STL containers vector, deque, list, set and map can grow and shrink dynamically. We now examine how some of these containers can be implemented in C++. To
More informationCSE 12, Week Six, Lecture Two Discussion: Getting started on hw7 & hw8
CSE 12, Week Six, Lecture Two Discussion: Getting started on hw7 & hw8 Tree: What: - A container object - Composed of a TNodes o Each TNode holds - One root TNode pointer o The TNode in the Tree - Zero
More informationChapter 10 Introduction to Classes
C++ for Engineers and Scientists Third Edition Chapter 10 Introduction to Classes CSc 10200! Introduction to Computing Lecture 20-21 Edgardo Molina Fall 2013 City College of New York 2 Objectives In this
More information3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.
3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.
More informationDiscussion 1E. Jie(Jay) Wang Week 10 Dec.2
Discussion 1E Jie(Jay) Wang Week 10 Dec.2 Outline Dynamic memory allocation Class Final Review Dynamic Allocation of Memory Recall int len = 100; double arr[len]; // error! What if I need to compute the
More informationWritten by John Bell for CS 342, Spring 2018
Advanced OO Concepts Written by John Bell for CS 342, Spring 2018 Based on chapter 3 of The Object-Oriented Thought Process by Matt Weisfeld, with additional material from other sources. Constructors Constructors
More information+ Abstract Data Types
Linked Lists Abstract Data Types An Abstract Data Type (ADT) is: a set of values a set of operations Sounds familiar, right? I gave a similar definition for a data structure. Abstract Data Types Abstract
More informationEvery language has its own scoping rules. For example, what is the scope of variable j in this Java program?
Lexical Binding There are two ways a variable can be used in a program: As a declaration As a "reference" or use of the variable Scheme has two kinds of variable "declarations" -- the bindings of a let-expression
More informationIntroduction to C++ Part II. Søren Debois. Department of Theoretical Computer Science IT University of Copenhagen. September 12th, 2005
Introduction to C++ Part II Søren Debois Department of Theoretical Computer Science IT University of Copenhagen September 12th, 2005 Søren Debois (Theory, ITU) Introduction to C++ September 12th, 2005
More informationObject-Oriented Programming
Object-Oriented Programming 1. What is object-oriented programming (OOP)? OOP is a technique to develop logical modules, such as classes that contain properties, methods, fields, and events. An object
More informationName: I. 20 II. 20 III. 20 IV. 40. CMSC 341 Section 01 Fall 2016 Data Structures Exam 1. Instructions: 1. This is a closed-book, closed-notes exam.
CMSC 341 Section 01 Fall 2016 Data Structures Exam 1 Name: Score Max I. 20 II. 20 III. 20 IV. 40 Instructions: 1. This is a closed-book, closed-notes exam. 2. You have 75 minutes for the exam. 3. Calculators,
More informationThe issues. Programming in C++ Common storage modes. Static storage in C++ Session 8 Memory Management
Session 8 Memory Management The issues Dr Christos Kloukinas City, UoL http://staff.city.ac.uk/c.kloukinas/cpp (slides originally produced by Dr Ross Paterson) Programs manipulate data, which must be stored
More informationObject Oriented Programming COP3330 / CGS5409
Object Oriented Programming COP3330 / CGS5409 C++ Automatics Copy constructor () Assignment operator = Shallow copy vs. Deep copy DMA Review c-strings vs. concept of string class Constructor Destructor
More informationExam 3 Chapters 7 & 9
Exam 3 Chapters 7 & 9 CSC 2100-002/003 29 Mar 2017 Read through the entire test first BEFORE starting Put your name at the TOP of every page The test has 4 sections worth a total of 100 points o True/False
More informationConstructors and Destructors. OOC 4 th Sem, B Div Prof. Mouna M. Naravani
Constructors and Destructors OOC 4 th Sem, B Div 2016-17 Prof. Mouna M. Naravani A constructor guarantees that an object created by the class will be initialized automatically. Ex: create an object integer
More informationMemory Management. CS31 Pascal Van Hentenryck CS031. Lecture 19 1
Memory Management CS31 Pascal Van Hentenryck CS031 Lecture 19 1 Memory Management What is it? high-level languages abstract many aspects of memory management Support varies with the language Java (ML/Prolog/Lisp/Smalltalk)
More informationCSC 1214: Object-Oriented Programming
CSC 1214: Object-Oriented Programming J. Kizito Makerere University e-mail: jkizito@cis.mak.ac.ug www: http://serval.ug/~jona materials: http://serval.ug/~jona/materials/csc1214 e-learning environment:
More informationCS24 Week 3 Lecture 1
CS24 Week 3 Lecture 1 Kyle Dewey Overview Some minor C++ points ADT Review Object-oriented Programming C++ Classes Constructors Destructors More minor Points (if time) Key Minor Points const Motivation
More information! Those values must be stored somewhere! Therefore, variables must somehow be bound. ! How?
A Binding Question! Variables are bound (dynamically) to values Subprogram Activation! Those values must be stored somewhere! Therefore, variables must somehow be bound to memory locations! How? Function
More informationDepartment of Computer science and Engineering Sub. Name: Object oriented programming and data structures Sub. Code: EC6301 Sem/Class: III/II-ECE Staff name: M.Kavipriya Two Mark Questions UNIT-1 1. List
More informationDynamic Allocation in C
Dynamic Allocation in C 1 The previous examples involved only targets that were declared as local variables. For serious development, we must also be able to create variables dynamically, as the program
More informationC++ for Java Programmers
Lecture 6 More pointing action Yesterday we considered: Pointer Assignment Dereferencing Pointers to Pointers to Pointers Pointers and Array Pointer Arithmetic 2 Todays Lecture What do we know 3 And now
More informationA linear-list Data Structure where - addition of elements to and - removal of elements from are restricted to the first element of the list.
A linear-list Data Structure where - addition of elements to and - removal of elements from are restricted to the first element of the list. the first element of the list a new element to (the Top of)
More informationLecture08: Scope and Lexical Address
Lecture08: Scope and Lexical Address Free and Bound Variables (EOPL 1.3.1) Given an expression E, does a particular variable reference x appear free or bound in that expression? Definition: A variable
More informationC++: Const Function Overloading Constructors and Destructors Enumerations Assertions
C++: Const Function Overloading Constructors and Destructors Enumerations Assertions Const const float pi=3.14159; const int* pheight; // defines pointer to // constant int value cannot be changed // pointer
More informationThis section provides some reminders and some terminology with which you might not be familiar.
Chapter 3: Functions 3.1 Introduction The previous chapter assumed that all of your Bali code would be written inside a sole main function. But, as you have learned from previous programming courses, modularizing
More informationCS-201 Introduction to Programming with Java
CS-201 Introduction to Programming with Java California State University, Los Angeles Computer Science Department Lecture IX: Methods Introduction method: construct for grouping statements together to
More informationAnnouncements. Lecture 04b Header Classes. Review (again) Comments on PA1 & PA2. Warning about Arrays. Arrays 9/15/17
Announcements Lecture 04b Sept. 14 th, 2017 Midterm #1: Sept. 26 th (week from Tuesday) Code distributed one week from today PA2 test cases & answers posted Quiz #4 next Tuesday (before class) PA3 due
More informationProgramming Abstractions
Programming Abstractions C S 1 0 6 X Cynthia Lee Topics: Last week, with Marty Stepp: Making your own class Arrays in C++ This week: Memory and Pointers Revisit some topics from last week Deeper look at
More informationWhat the CPU Sees Basic Flow Control Conditional Flow Control Structured Flow Control Functions and Scope. C Flow Control.
C Flow Control David Chisnall February 1, 2011 Outline What the CPU Sees Basic Flow Control Conditional Flow Control Structured Flow Control Functions and Scope Disclaimer! These slides contain a lot of
More informationCSCI 262 Data Structures. The Big 3. Copy Constructor. Destructor. Assignment Operator 3/4/ The Big 3
CSCI 262 Data Structures 12 The Big 3 What are THE BIG 3 The Big 3 Three (optional) methods for your class: Copy constructor: creates copies of object When passing by value When used in variable initializer
More informationLecture 18 Tao Wang 1
Lecture 18 Tao Wang 1 Abstract Data Types in C++ (Classes) A procedural program consists of one or more algorithms that have been written in computerreadable language Input and display of program output
More informationProject Compiler. CS031 TA Help Session November 28, 2011
Project Compiler CS031 TA Help Session November 28, 2011 Motivation Generally, it s easier to program in higher-level languages than in assembly. Our goal is to automate the conversion from a higher-level
More information! Determine if a number is odd or even. ! Determine if a number/character is in a range. - 1 to 10 (inclusive) - between a and z (inclusive)
Final Exam Exercises Chapters 1-7 + 11 Write C++ code to:! Determine if a number is odd or even CS 2308 Fall 2018 Jill Seaman! Determine if a number/character is in a range - 1 to 10 (inclusive) - between
More informationCompiler Construction Lent Term 2015 Lectures 10, 11 (of 16)
Compiler Construction Lent Term 15 Lectures 10, 11 (of 16) 1. Slang.2 (Lecture 10) 1. In lecture code walk of slang2_derive 2. Assorted topics (Lecture 11) 1. Exceptions 2. Objects 3. Stacks vs. Register
More informationG Programming Languages - Fall 2012
G22.2110-003 Programming Languages - Fall 2012 Lecture 4 Thomas Wies New York University Review Last week Control Structures Selection Loops Adding Invariants Outline Subprograms Calling Sequences Parameter
More informationCS1150 Principles of Computer Science Methods
CS1150 Principles of Computer Science Methods Yanyan Zhuang Department of Computer Science http://www.cs.uccs.edu/~yzhuang CS1150 UC. Colorado Springs Opening Problem Find the sum of integers from 1 to
More informationMemory management COSC346
Memory management COSC346 Life cycle of an object Create a reference pointer Allocate memory for the object Initialise internal data Do stuff Destroy the object Release memory 2 Constructors and destructors
More informationAn Introduction to C++
An Introduction to C++ Introduction to C++ C++ classes C++ class details To create a complex type in C In the.h file Define structs to store data Declare function prototypes The.h file serves as the interface
More informationCSCI 262 Data Structures. Arrays and Pointers. Arrays. Arrays and Pointers 2/6/2018 POINTER ARITHMETIC
CSCI 262 Data Structures 9 Dynamically Allocated Memory POINTERS AND ARRAYS 2 Arrays Arrays are just sequential chunks of memory: Arrays and Pointers Array variables are secretly pointers: x19 x18 x17
More informationCpt S 122 Data Structures. Course Review Midterm Exam # 2
Cpt S 122 Data Structures Course Review Midterm Exam # 2 Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Midterm Exam 2 When: Monday (11/05) 12:10 pm -1pm
More informationName, Scope, and Binding. Outline [1]
Name, Scope, and Binding In Text: Chapter 3 Outline [1] Variable Binding Storage bindings and lifetime Type bindings Type Checking Scope Lifetime vs. Scope Referencing Environments N. Meng, S. Arthur 2
More informationCOMP 2355 Introduction to Systems Programming
COMP 2355 Introduction to Systems Programming Christian Grothoff christian@grothoff.org http://grothoff.org/christian/ 1 Today Class syntax, Constructors, Destructors Static methods Inheritance, Abstract
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationHomework #3 CS2255 Fall 2012
Homework #3 CS2255 Fall 2012 MULTIPLE CHOICE 1. The, also known as the address operator, returns the memory address of a variable. a. asterisk ( * ) b. ampersand ( & ) c. percent sign (%) d. exclamation
More informationObject-oriented Programming. Object-oriented Programming
2014-06-13 Object-oriented Programming Object-oriented Programming 2014-06-13 Object-oriented Programming 1 Object-oriented Languages object-based: language that supports objects class-based: language
More informationThe basic operations defined on a symbol table include: free to remove all entries and free the storage of a symbol table
SYMBOL TABLE: A symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier in a program's source code is associated with information relating
More informationcout << "How many numbers would you like to type? "; cin >> memsize; p = new int[memsize];
1 C++ Dynamic Allocation Memory needs were determined before program execution by defining the variables needed. Sometime memory needs of a program can only be determined during runtime, or the memory
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Fall 2015 Lecture 19 Introduction to C++
CSE 374 Programming Concepts & Tools Hal Perkins Fall 2015 Lecture 19 Introduction to C++ C++ C++ is an enormous language: All of C Classes and objects (kind of like Java, some crucial differences) Many
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationPurpose of Review. Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures
C++ Review 1 Purpose of Review Review some basic C++ Familiarize us with Weiss s style Introduce specific constructs useful for implementing data structures 2 Class The Class defines the data structure
More informationInheritance. Transitivity
Inheritance Classes can be organized in a hierarchical structure based on the concept of inheritance Inheritance The property that instances of a sub-class can access both data and behavior associated
More informationObject-Oriented Languages and Object-Oriented Design. Ghezzi&Jazayeri: OO Languages 1
Object-Oriented Languages and Object-Oriented Design Ghezzi&Jazayeri: OO Languages 1 What is an OO language? In Ada and Modula 2 one can define objects encapsulate a data structure and relevant operations
More informationProgramming, numerics and optimization
Programming, numerics and optimization Lecture A-4: Object-oriented programming Łukasz Jankowski ljank@ippt.pan.pl Institute of Fundamental Technological Research Room 4.32, Phone +22.8261281 ext. 428
More informationCOMP6771 Advanced C++ Programming
1.. COMP6771 Advanced C++ Programming Week 5 Part Two: Dynamic Memory Management 2016 www.cse.unsw.edu.au/ cs6771 2.. Revisited 1 #include 2 3 struct X { 4 X() { std::cout
More informationINITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS
INITIALISING POINTER VARIABLES; DYNAMIC VARIABLES; OPERATIONS ON POINTERS Pages 792 to 800 Anna Rakitianskaia, University of Pretoria INITIALISING POINTER VARIABLES Pointer variables are declared by putting
More informationFundamental Concepts and Definitions
Fundamental Concepts and Definitions Identifier / Symbol / Name These terms are synonymous: they refer to the name given to a programming component. Classes, variables, functions, and methods are the most
More informationMIDI plugins with JUCE
MIDI plugins with JUCE Click to edit Master EECS text 4462 styles - Digital Audio Second level Third level Fourth level Fifth level September 25, 2018 1 What is a plugin? A plugin is a software component
More informationToday's Topics. CISC 458 Winter J.R. Cordy
Today's Topics Last Time Semantics - the meaning of program structures Stack model of expression evaluation, the Expression Stack (ES) Stack model of automatic storage, the Run Stack (RS) Today Managing
More informationC++ : Object Oriented Features. What makes C++ Object Oriented
C++ : Object Oriented Features What makes C++ Object Oriented Encapsulation in C++ : Classes In C++, a package of data + processes == class A class is a user defined data type Variables of a class are
More informationObject-Oriented Programming, Iouliia Skliarova
Object-Oriented Programming, Iouliia Skliarova A reference (&) is like a constant pointer that is automatically dereferenced. There are certain rules when using references: 1. A reference must be initialized
More informationSmart Pointers. Some slides from Internet
Smart Pointers Some slides from Internet 1 Part I: Concept Reference: Using C++11 s Smart Pointers, David Kieras, EECS Department, University of Michigan C++ Primer, Stanley B. Lippman, Jesee Lajoie, Barbara
More informationIntermediate Programming, Spring 2017*
600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general
More informationCSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010
CSE 374 Programming Concepts & Tools Hal Perkins Spring 2010 Lecture 19 Introduction ti to C++ C++ C++ is an enormous language: g All of C Classes and objects (kind of like Java, some crucial differences)
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationClasses: Member functions // classes example #include <iostream> using namespace std; Objects : Reminder. Member functions: Methods.
Classes: Methods, Constructors, Destructors and Assignment For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 Piyush Kumar Classes: Member functions // classes
More informationAdvances in Programming Languages: Regions
Advances in Programming Languages: Regions Allan Clark and Stephen Gilmore The University of Edinburgh February 22, 2007 Introduction The design decision that memory will be managed on a per-language basis
More informationSupporting Class / C++ Lecture Notes
Goal Supporting Class / C++ Lecture Notes You started with an understanding of how to write Java programs. This course is about explaining the path from Java to executing programs. We proceeded in a mostly
More information