Assertions and Exceptions
|
|
- Rosalyn Arnold
- 5 years ago
- Views:
Transcription
1 CS 247: Software Engineering Principles Assertions and Exceptions Reading: Eckel, Vol. 2 Ch. 1 Exception Handling U Waterloo CS247 (Spring 2017) p.1/32
2 Defensive Programming The question isn t whether or not we will make programming errors... the question is whether or not we will arrange for our compiler and tools to help us find them. Sutter & Alexandrescu, C++ Coding Standards U Waterloo CS247 (Spring 2017) p.2/32
3 Possible Failures Errors in your code bugs, invariant violation, exposure of data representation Misuse of your code client-code violations of your preconditions External problems non existent input file, inappropriate file permissions out of memory, memory corruption hardware limitations (overflow, underflow) U Waterloo CS247 (Spring 2017) p.3/32
4 Assertions Use assertions to document and check assumptions. Check preconditions of functions. Check postconditions of functions. Check representation invariants (next week s lectures). Check postconditions of called functions. Goal: Abort program as close to error as possible, then can use debugger to examine program state. U Waterloo CS247 (Spring 2017) p.4/32
5 Assertions in Production Code? It depends: Yes: don t want to risk the program corrupting persistent data. No: may need program to keep executing; maybe bug doesn t have that many bad consequences. Can remove all assertions by compiling with preprocessor variable NDEBUG defined: % g++ -DNDEBUG... Warning: Assertions should not have side effects! assert ( i++ == 10); // program behaves differently if asserts are defined U Waterloo CS247 (Spring 2017) p.5/32
6 Error Recovery calls calls calls calls main() f1() f2() fn() and recover from more here returns can recover from some problems here returns something bad happens here Goal: pass information from the point where an error is detected to a point where it can be handled. U Waterloo CS247 (Spring 2017) p.6/32
7 Traditional Error Handling Techniques ifstream infile; // ifstream used to read from file infile.open("data"); // opens file "data" on disk if (!infile) { cout << "Error opening input file data." << endl; exit(1); while (!infile.eof()) { true String name; infile >> name; if (infile.fail()) { // react to read failure (likely format error) else if (infile.bad()) { // react to read failure (likely some data lost) else { // process data U Waterloo CS247 (Spring 2017) p.7/32
8 Exceptions An exception is an object thrown to represent the occurrence of an error. Passes information from the point where an error is detected to a point where it can be handled. Called component reports failure by throwing an exception. Caller component specifies which kinds of failures it can handle in catch-clauses of a try-block. Example: RationalExceptional.cpp U Waterloo CS247 (Spring 2017) p.8/32
9 void f() { // some code C++ Exception Handling Supposedly Risk-free Code try { Risky Codecould throw exceptions catch (type1& e1) { catch (type2& e2) { Error-handling code catch (type3& e3) { // more code Eckel and Allison, Thinking in C++ Vol. 2 Supposedly Risk-free Code U Waterloo CS247 (Spring 2017) p.9/32
10 class Rational { public: class DivideByZeroException {; Rational( int, int ); ; Rational::Rational(int numer, int denom) { if (denom == 0) { // throw 0; // throw "Denominator cannot be 0."; throw DivideByZeroException; Throwing an Exception reduce( numer, denom ); numerator_ = numer; denominator_ = denom; Can throw values of any type that can be copied Can throw error messages Usually throw userdefined object U Waterloo CS247 (Spring 2017) p.10/32
11 Exception Class class Rational { public: class DivideByZeroException { public: DivideByZeroException( int n ) : numer_(n) { int numer() const { return numer_; // accessor private: int numer_; // exception data ;... ; Rational::Rational(int numer, int denom) { if (denom == 0) { throw DivideByZeroException( numer );... U Waterloo CS247 (Spring 2017) p.11/32
12 Standard Exceptions Programmers can define their own exception hierarchy, or derive new exceptions from the standard exception hierarchy. #include<exception> exception logic_error bad_alloc #include<new> bad_exception #include<exception> domain_error invalid_argument bad_typeid bad_cast runtime_error #include<typeinfo> #include<typeinfo> length_error out_of_range underflow_error overflow_error #include<stdexcept> range_error U Waterloo CS247 (Spring 2017) p.12/32
13 Catching an Exception int main () { Rational r; try { cout << "Enter rational number (a/b): "; cin >> r; // can throw exception catch ( Rational::DivideByZeroException &e ) { cout << e.numer() << "/0 is not a legal Rational value." << endl;... U Waterloo CS247 (Spring 2017) p.13/32
14 Catching an Exception Exception is handled by the "nearest" handler whose argument matches the type of the exception object. in the same routine as it is thrown in the (dynamically) nearest client-code routine that has a matching catch-clause whose try-block encloses the throw. If there is no matching handler, then the program aborts. U Waterloo CS247 (Spring 2017) p.14/32
15 Stack Unwinding As control transfers to an exception handler, it must pop off the call stack all of the scope blocks that reside on top of the matching handler. Objects in the stack are deleted for us automatically, invoking the appropriate destructors. Partially constructed stack-based objects (e.g., objects from failed constructors) are properly destroyed. If, during stack unwinding, a destructor throws an exception that it does not handle locally, the program terminates. What about heap-based objects? U Waterloo CS247 (Spring 2017) p.15/32
16 Matching, Throwing, Rethrowing class X { public: class Trouble {; class Small : public Trouble {; class Big : public Trouble {; void f() { throw Big(); ; Never reached -- Trouble clause will catch Big exceptions int main() { X x; try { x.f(); catch(x::small&) { base-class handler catches derived-class exceptions a catch-any handler cout << "Small Trouble"; throw Trouble(); rethrows same catch(x::trouble&) { exception object cout << "Trouble"; catch(x::big&) { cout << "Big Trouble"; catch(...) { cout << "catches any type of exception"; throw; Eckel and Allison, Thinking in C++ Vol. 2 U Waterloo CS247 (Spring 2017) p.16/32
17 What about the Heap-Based Objects? Using normal pointers: if (somecondition) { MyClass* rc = new MyClass (); // do Stuff delete rc; If "do Stuff" throws an exception or returns normally, then delete rc is never executed, even if the system manages to recover from the exception. U Waterloo CS247 (Spring 2017) p.17/32
18 Exception Safety Guarantees An operation is exception-safe if it leaves the program in a valid state after terminating by throwing an exception, e.g. basic guarantee: basic invariants of all objects are maintained, and no resources, such as memory, are leaked strong guarantee: basic guarantee + state of the program reverts to what it was prior to the call nothrow guarantee: basic guarantee + guarantee not to throw an exception U Waterloo CS247 (Spring 2017) p.18/32
19 Smart Pointers Raw pointers in C++ are basically addresses of data with a bit more type safety than C pointers. However, it s legal and common to accidentally: access an object that s been deleted delete an object that s already been deleted delete an object that another pointer refers to You would like your pointers to be smart enough to do the correct and obvious thing with respect to object deletion. Example: RationalUniquePtr.cpp U Waterloo CS247 (Spring 2017) p.19/32
20 Smart Pointers A smart pointer, such as unique_ptr< >, is actually a templated object with an internal pointer variable that points to a heap object. the class overloads the * and -> operators, so it feels like a real pointer instances are typically created as stack-based objects heap object usually allocated in constructor destructor deletes the heap object it points to so if an exception is raised, then the smart pointer s destructor is invoked, which in turn deletes the heap-based object it points to U Waterloo CS247 (Spring 2017) p.20/32
21 Using smart pointers Using Smart Pointers if (somecondition) { unique_ptr<myclass> rc ( new MyClass () ); // do Stuff If "do Stuff" throws an exception or returns normally, then the object rc (and the Circle object that it points to) is deleted automatically during stack unwinding; otherwise, rc is destroyed at the end of its enclosing block just like any other stack-based object. U Waterloo CS247 (Spring 2017) p.21/32
22 unique_ptr #include <memory> A unique_ptr supports exclusive ownership of a referent should be the sole pointer to its referent a unique_ptr cannot be copied (however, it can be moved) is responsible for destroying its referent Stroustrup, The C++ Programmng Language, 4ed U Waterloo CS247 (Spring 2017) p.22/32
23 unique_ptr template <class X> // partial, simplified definition class unique_ptr { public: typedef X element_type; // holds smart pointer to X // construct/copy/destroy: explicit unique_ptr( X* p =0 ); // creates unique_ptr bound to *p ~unique_ptr(); // delete object unique_ptr( unique_ptr&& ); // transfers ownership unique_ptr& operator=( unique_ptr&& ); // transfers ownership unique_ptr& operator=( nullptr ); // delete object, set this to null // members: X& operator*() const; // access referent X* operator->() const; // access member of referent X* get() const; // returns pointer X* release(); // unbinds: returns ptr, set this to null void reset(x *p =0); // destroys old referent and binds this to *p ; U Waterloo CS247 (Spring 2017) p.23/32
24 Useful for Transferring Ownership unique_ptr<t> Source() { return unique_ptr<t> ( new T ); // return by copy unique_ptr<t> pt = Source(); void Sink ( unique_ptr<t> pt ) { // passed in by copy == transfer of ownership pt.reset(); Sink( pt ); U Waterloo CS247 (Spring 2017) p.24/32
25 shared_ptr #include <memory> A shared_ptr supports shared ownership of a referent referent maintains a count of pointers referring to it when count reaches 0, the object can be destroyed control block use count weak count deleter Stroustrup, The C++ Programmng Language, 4ed U Waterloo CS247 (Spring 2017) p.25/32
26 weak_ptr #include <memory> A weak_ptr works with a shared_ptr and shares ownership of a referent, but does not contribute to the reference count. can test if the object has been destroyed and weak_ptr is dangling auto spw = std::make_shared<widget>(); std::weak_ptr<widget> wpw (spw); spw = nullptr; if ( wpw.expired() ) but must convert into a shared_ptr in order to reference object auto spw2 = wpw.lock(); // if wpw's expired, spw1 is null std::shared_ptr<widget> spw3(wpw); // if wpw's expired, // throw std::bad_weak_ptr U Waterloo CS247 (Spring 2017) p.26/32
27 The RAII Programming Idiom Resource Acquisition is Initialization (RAII): equates resource management with the lifetime of an object. - Resource is allocated inside an object's constructor. - Resource is deallocated inside an object's destructor. class Resource { resource_type *r_; resource_type* allocate( parms p ); void release ( resource_type* ); public: Resource (parms p) : r_( allocate(p) ) { ~Resource() { release(r_); // accessors, mutators, etc. ; U Waterloo CS247 (Spring 2017) p.27/32
28 #include <cstdio> #include <stdexcept> // std::runtime_error class file { public: file(const char* filename) : file_(std::fopen(filename, "w+")) { if (!file_) { throw std::runtime_error("file open failure"); ~file() { if (std::fclose(file_)) { // failed to flush latest changes. // handle it void write(const char* str); RAII Example // prevent copying and assignment; not implemented file(const file &) = delete; file& operator=(const file &) = delete; private: std::file* file_; ; U Waterloo CS247 (Spring 2017) p.28/32
29 noexcept Functions may declare that they will not throw exceptions. class Rational { public: class DivideByZeroException {; Rational( int, int ); ~Rational() noexcept; int numer() const noexcept; ; Benefits the programmer, who doesn t have to provide try-clauses. Benefits the compiler, which can optimize for no exceptions. U Waterloo CS247 (Spring 2017) p.29/32
30 Exceptions vs. Assertions Do not use exceptions to report programming errors. Throwing an exception will unwind the program stack and destroy local variables. We want the program to terminate on the exact line where the violation occurred, with the whole program state intact for our examination. U Waterloo CS247 (Spring 2017) p.30/32
31 Summary When to use exceptions Not for programming errors (use assertions) Often not needed if simply terminating program - Can let system clean up Throw exceptions in constructor, mutators Don't throw exceptions in destructors, copy constructors, assignment, accessors, operators How to use exceptions Nest exception class declarations inside class descriptions Use class hierarchies (for polymorphic handlers) Catch exceptions by reference, not by value (polymorphism) Use RAII, smart pointers to perform automated cleanup Use noexcept (not exception specifications) U Waterloo CS247 (Spring 2017) p.31/32
32 What you should get from this Recognition Where and when to use (or not use) exceptions Motivation for RAII idiom Comprehension How exception handling works in C++, including rules for finding a matching handler and how stack unwinding works When to use exceptions vs. assertions, and why When to use unique_ptr vs. shared_ptr vs. weak_ptr Application Throw and catch exception objects Nest exception classes within ADT classes How to use smart pointers How to use RAII to ensure resource initialization and cleanup noexcept U Waterloo CS247 (Spring 2017) p.32/32
CS11 Advanced C++ Fall Lecture 3
CS11 Advanced C++ Fall 2006-2007 Lecture 3 Today s Topics C++ Standard Exceptions Exception Cleanup Fun with Exceptions Exception Specifications C++ Exceptions Exceptions are nice for reporting many errors
More informationvoid fun() C::C() // ctor try try try : member( ) catch (const E& e) { catch (const E& e) { catch (const E& e) {
TDDD38 APiC++ Exception Handling 134 Exception handling provides a way to transfer control and information from a point in the execution to an exception handler a handler can be invoked by a throw expression
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 information! Errors can be dealt with at place error occurs
UCLA Stat 1D Statistical Computing and Visualization in C++ Instructor: Ivo Dinov, Asst. Prof. in Statistics / Neurology University of California, Los Angeles, Winter 200 http://www.stat.ucla.edu/~dinov/courses_students.html
More informationLaboratorio di Tecnologie dell'informazione. Ing. Marco Bertini
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini bertini@dsi.unifi.it http://www.dsi.unifi.it/~bertini/ Resource Management Memory, auto_ptr and RAII The most commonly used resource in
More informationException Safe Coding
Exception Safe Coding Dirk Hutter hutter@compeng.uni-frankfurt.de Prof. Dr. Volker Lindenstruth FIAS Frankfurt Institute for Advanced Studies Goethe-Universität Frankfurt am Main, Germany http://compeng.uni-frankfurt.de
More informationIS 0020 Program Design and Software Tools
1 Introduction 2 IS 0020 Program Design and Software Tools Exception Handling Lecture 12 November 23, 200 Exceptions Indicates problem occurred in program Not common An "exception" to a program that usually
More informationException Handling Pearson Education, Inc. All rights reserved.
1 16 Exception Handling 2 I never forget a face, but in your case I ll make an exception. Groucho Marx It is common sense to take a method and try it. If it fails, admit it frankly and try another. But
More informationObject-Oriented Principles and Practice / C++
Object-Oriented Principles and Practice / C++ Alice E. Fischer June 8, 2015 OOPP / C++ Lecture 7... 1/20 Program Errors Error Handling Techniques Exceptions in C++ Exception Definition Syntax Throwing
More informationCOMP322 - Introduction to C++ Lecture 10 - Overloading Operators and Exceptions
COMP322 - Introduction to C++ Lecture 10 - Overloading Operators and Exceptions Dan Pomerantz School of Computer Science 19 March 2012 Overloading operators in classes It is useful sometimes to define
More informationHomework 4. Any questions?
CSE333 SECTION 8 Homework 4 Any questions? STL Standard Template Library Has many pre-build container classes STL containers store by value, not by reference Should try to use this as much as possible
More informationC++ Crash Kurs. Exceptions. Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck
C++ Crash Kurs Exceptions Dr. Dennis Pfisterer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer C++ Exceptions: Introduction What are exceptions Exceptions are
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 informationException Handling in C++
Exception Handling in C++ Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2 nd edition, by Kernighan and Ritchie, Absolute C++, by
More informationPointers. Developed By Ms. K.M.Sanghavi
Pointers Developed By Ms. K.M.Sanghavi Memory Management : Dynamic Pointers Linked List Example Smart Pointers Auto Pointer Unique Pointer Shared Pointer Weak Pointer Memory Management In order to create
More informationLecture Material. Exceptions
Lecture Material Exceptions 1 Grouping of Exceptions Often, exceptions fall naturally into families. This implies that inheritance can be useful to structure exceptions and to help exception handling.
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 informationConstants, References
CS 246: Software Abstraction and Specification Constants, References Readings: Eckel, Vol. 1 Ch. 8 Constants Ch. 11 References and the Copy Constructor U Waterloo CS246se (Spring 2011) p.1/14 Uses of const
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 informationRAII and Smart Pointers. Ali Malik
RAII and Smart Pointers Ali Malik malikali@stanford.edu Game Plan Recap Conversion Operators RAII Smart Pointers Recap Initialisation: Initialisation vs Assignment Transforms an object s initial junk data
More informationA Whirlwind Tour of C++
Robert P. Goddard Applied Physics Laboratory University of Washington Part 1: 3 November 2000: Object Model Part 2: 17 November 2000: Templates Part 3: 15 December 2000: STL Part 4: 30 March 2001 Exceptions
More informationException Namespaces C Interoperability Templates. More C++ David Chisnall. March 17, 2011
More C++ David Chisnall March 17, 2011 Exceptions A more fashionable goto Provides a second way of sending an error condition up the stack until it can be handled Lets intervening stack frames ignore errors
More informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Exceptions What are exceptions? Exceptions are a mechanism for handling an error
More informationIntroduction. Common examples of exceptions
Exception Handling Introduction Common examples of exceptions Failure of new to obtain memory Out-of-bounds array subscript Division by zero Invalid function parameters Programs with exception handling
More information1 Introduction to C++ C++ basics, simple IO, and error handling
1 Introduction to C++ C++ basics, simple IO, and error handling 1 Preview on the origins of C++ "Hello, World!" programs namespaces to avoid collisions basic textual IO: reading and printing values exception
More informationCS102 C++ Exception Handling & Namespaces
CS102 C++ Exception Handling & Namespaces Bill Cheng http://merlot.usc.edu/cs102-s12 1 Topics to cover C Structs (Ch 10) C++ Classes (Ch 11) Constructors Destructors Member functions Exception Handling
More informationLecture 10. To use try, throw, and catch Constructors and destructors Standard exception hierarchy new failures
Lecture 10 Class string Exception Handling To use try, throw, and catch Constructors and destructors Standard exception hierarchy new failures Class template auto_ptr Lec 10 Programming in C++ 1 Class
More informationEngineering Robust Server Software
Engineering Robust Server Software Exceptions Exceptions Handling problems: exceptions C++ Java temp-and-swap RAII Smart Pointers finally specifications finalizers (and why they are not what you need for
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 informationOutline. Zoltán Porkoláb: C++11/14 1
Outline Handling exceptional cases: errno, assert, longjmp Goals of exception handling Handlers and exceptions Standard exceptions Exception safe programming C++11 noexcept Exception_ptr, nested_exceptions
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 19 November 7, 2018 CPSC 427, Lecture 19, November 7, 2018 1/18 Exceptions Thowing an Exception Catching an Exception CPSC 427, Lecture
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 informationSpecial Member Functions
CS 247: Software Engineering Principles Special Member Functions Readings: Eckel, Vol. 1 Ch. 11 References and the Copy Constructor Ch. 12 Operator Overloading ( operator= ) U Waterloo CS247 (Spring 2017)
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 information17.1 Handling Errors in a Program
Chapter 17: Exceptions From the board game MONOPOLY, the rule to follow when your man lands on the illegal square: Go to jail. Go directly to jail, do not pass GO and do not collect $200. 17.1 Handling
More informationSpecial Member Functions. Compiler-Generated Destructor. Compiler-Generated Default Constructor. Special Member Functions
Special Member Functions CS 247: Software Engineering Principles Special Member Functions Readings: Eckel, Vol. 1 Ch. 11 References and the Copy Constructor Ch. 12 Operator Overloading ( operator= ) C++
More information21. Exceptions. Advanced Concepts: // exceptions #include <iostream> using namespace std;
- 147 - Advanced Concepts: 21. Exceptions Exceptions provide a way to react to exceptional circumstances (like runtime errors) in our program by transferring control to special functions called handlers.
More informationContents. Error Handling Strategies (cont d) Error handling strategies: error code, assert(), throw-try-catch
Contents Error handling strategies: error code, assert(), throw-try-catch Exception Handling C++ Object Oriented Programming Pei-yih Ting NTOU CS 28-1 C++waysoferrorhandling Exceptions vs. assert() Error
More informationAbstract Data Types (ADTs) 1. Legal Values. Client Code for Rational ADT. ADT Design. CS 247: Software Engineering Principles
Abstract Data Types (ADTs) CS 247: Software Engineering Principles ADT Design An abstract data type (ADT) is a user-defined type that bundles together: the range of values that variables of that type can
More informationObject-Oriented Programming for Scientific Computing
Object-Oriented Programming for Scientific Computing Error Handling and Exceptions Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University ole.klein@iwr.uni-heidelberg.de Summer
More informationCS 251 INTERMEDIATE SOFTWARE DESIGN SPRING C ++ Basics Review part 2 Auto pointer, templates, STL algorithms
CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms AUTO POINTER (AUTO_PTR) //Example showing a bad situation with naked pointers void MyFunction()
More information1/29/2011 AUTO POINTER (AUTO_PTR) INTERMEDIATE SOFTWARE DESIGN SPRING delete ptr might not happen memory leak!
//Example showing a bad situation with naked pointers CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING 2011 C ++ Basics Review part 2 Auto pointer, templates, STL algorithms void MyFunction() MyClass* ptr( new
More informationCS 247: Software Engineering Principles. ADT Design
CS 247: Software Engineering Principles ADT Design Readings: Eckel, Vol. 1 Ch. 7 Function Overloading & Default Arguments Ch. 12 Operator Overloading U Waterloo CS247 (Spring 2017) p.1/17 Abstract Data
More informationG52CPP C++ Programming Lecture 16
G52CPP C++ Programming Lecture 16 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last Lecture Casting static cast dynamic cast const cast reinterpret cast Implicit type conversion 2 How
More informationAbsolute C++ Walter Savitch
Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents
More informationUnit 4 Basic Collections
Unit 4 Basic Collections General Concepts Templates Exceptions Iterators Collection (or Container) Classes Vectors (or Arrays) Sets Lists Maps or Tables C++ Standard Template Library (STL Overview A program
More informationLecture 15a Persistent Memory & Shared Pointers
Lecture 15a Persistent Memory & Shared Pointers Dec. 5 th, 2017 Jack Applin, Guest Lecturer 2017-12-04 CS253 Fall 2017 Jack Applin & Bruce Draper 1 Announcements PA9 is due today Recitation : extra help
More informationModern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi
Modern C++ for Computer Vision and Image Processing Igor Bogoslavskyi Outline Using pointers Pointers are polymorphic Pointer this Using const with pointers Stack and Heap Memory leaks and dangling pointers
More informationArrays. Returning arrays Pointers Dynamic arrays Smart pointers Vectors
Arrays Returning arrays Pointers Dynamic arrays Smart pointers Vectors To declare an array specify the type, its name, and its size in []s int arr1[10]; //or int arr2[] = {1,2,3,4,5,6,7,8}; arr2 has 8
More informationSoftware Engineering Concepts: Invariants Silently Written & Called Functions Simple Class Example
Software Engineering Concepts: Invariants Silently Written & Called Functions Simple Class Example CS 311 Data Structures and Algorithms Lecture Slides Friday, September 11, 2009 continued Glenn G. Chappell
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 informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 10 October 1, 2018 CPSC 427, Lecture 10, October 1, 2018 1/20 Brackets Example (continued from lecture 8) Stack class Brackets class Main
More informationCS 241 Honors Memory
CS 241 Honors Memory Ben Kurtovic Atul Sandur Bhuvan Venkatesh Brian Zhou Kevin Hong University of Illinois Urbana Champaign February 20, 2018 CS 241 Course Staff (UIUC) Memory February 20, 2018 1 / 35
More informationdouble d0, d1, d2, d3; double * dp = new double[4]; double da[4];
All multiple choice questions are equally weighted. You can generally assume that code shown in the questions is intended to be syntactically correct, unless something in the question or one of the answers
More informationCS11 Introduction to C++ Fall Lecture 6
CS11 Introduction to C++ Fall 2006-2007 Lecture 6 Today s Topics C++ exceptions Introduction to templates How To Report Errors? C style of error reporting: return values For C Standard Library/UNIX functions,
More informationCSCI-1200 Data Structures Fall 2011 Lecture 24 Garbage Collection & Smart Pointers
CSCI-1200 Data Structures Fall 2011 Lecture 24 Garbage Collection & Smart Pointers Review from Lecture 23 Basic exception mechanisms: try/throw/catch Functions & exceptions, constructors & exceptions Today
More informationC++ Primer for CS175
C++ Primer for CS175 Yuanchen Zhu September 10, 2014 This primer is pretty long and might scare you. Don t worry! To do the assignments you don t need to understand every point made here. However this
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 informationCSCI-1200 Data Structures Spring 2017 Lecture 27 Garbage Collection & Smart Pointers
CSCI-1200 Data Structures Spring 2017 Lecture 27 Garbage Collection & Smart Pointers Announcements Please fill out your course evaluations! Those of you interested in becoming an undergraduate mentor for
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 informationA Crash Course in (Some of) Modern C++
CMPT 373 Software Development Methods A Crash Course in (Some of) Modern C++ Nick Sumner wsumner@sfu.ca With material from Bjarne Stroustrup & Herb Sutter C++ was complicated/intimidating Pointers Arithmetic
More informationCSE 333 Lecture smart pointers
CSE 333 Lecture 14 -- smart pointers Hal Perkins Paul G. Allen School of Computer Science & Engineering University of Washington Administrivia New exercise out today, due Wednesday morning Exam Friday
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 informationC++ PROGRAMMING LANGUAGE: DYNAMIC MEMORY ALLOCATION AND EXCEPTION IN C++. CAAM 519, CHAPTER 15
C++ PROGRAMMING LANGUAGE: DYNAMIC MEMORY ALLOCATION AND EXCEPTION IN C++. CAAM 519, CHAPTER 15 This chapter introduces the notion of dynamic memory allocation of variables and objects in a C++ program.
More informationVector and Free Store (Vectors and Arrays)
DM560 Introduction to Programming in C++ Vector and Free Store (Vectors and Arrays) Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark [Based on slides by Bjarne
More informationObject-Oriented Programming for Scientific Computing
Object-Oriented Programming for Scientific Computing Dynamic Memory Management Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University ole.klein@iwr.uni-heidelberg.de 2. Mai 2017
More information1 of 8 3/28/2010 8:03 AM C++ Special Topics Home Class Info Links Lectures Newsgroup Assignmen This is a short review of special topics in C++ especially helpful for various assignments. These notes are
More informationC++ Programming Lecture 5 Software Engineering Group
C++ Programming Lecture 5 Software Engineering Group Philipp D. Schubert Contents 1. Error handling A. Return codes B. Assertions C. Exceptions 2. Function pointers 3. std::function Error handling How
More informationException Safety. CS 311 Data Structures and Algorithms Lecture Slides Wednesday, October 28, Glenn G. Chappell. continued
continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, October 28, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks CHAPPELLG@member.ams.org 2005
More informationThis examination has 11 pages. Check that you have a complete paper.
MARKING KEY The University of British Columbia MARKING KEY Computer Science 252 2nd Midterm Exam 6:30 PM, Monday, November 8, 2004 Instructors: K. Booth & N. Hutchinson Time: 90 minutes Total marks: 90
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 22 November 28, 2016 CPSC 427, Lecture 22 1/43 Exceptions (continued) Code Reuse Linear Containers Ordered Containers Multiple Inheritance
More informationProblem Solving with C++
GLOBAL EDITION Problem Solving with C++ NINTH EDITION Walter Savitch Kendrick Mock Ninth Edition PROBLEM SOLVING with C++ Problem Solving with C++, Global Edition Cover Title Copyright Contents Chapter
More informationCpt S 122 Data Structures. Course Review FINAL. Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University
Cpt S 122 Data Structures Course Review FINAL Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Final When: Wednesday (12/12) 1:00 pm -3:00 pm Where: In Class
More informationG52CPP C++ Programming Lecture 20
G52CPP C++ Programming Lecture 20 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Wrapping up Slicing Problem Smart pointers More C++ things Exams 2 The slicing problem 3 Objects are not
More informationIntroduction to Linked Lists. Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms
Introduction to Linked Lists Introduction to Recursion Search Algorithms CS 311 Data Structures and Algorithms Lecture Slides Friday, September 25, 2009 Glenn G. Chappell Department of Computer Science
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 informationCS 247 Software Engineering Principles Midterm Examination **Solutions** Spring 2017
. Last Name: First Name: ID # CS 247 Software Engineering Principles Midterm Examination **Solutions** Spring 2017 Date: Thursday, June 22, 2017 Time: 4:30 6:20 pm Instructor: C. Kierstead Lecture Section:
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 7 September 21, 2016 CPSC 427, Lecture 7 1/21 Brackets Example (continued) Storage Management CPSC 427, Lecture 7 2/21 Brackets Example
More informationCSCI 104 Exceptions. Mark Redekopp David Kempe
CSCI 104 Exceptions Mark Redekopp David Kempe Code for Today On your VM: $ mkdir except $ cd except $ wget http://ee.usc.edu/~redekopp/cs104/except.tar $ tar xvf except.tar 2 Recall Remember the List ADT
More informationThrowing exceptions 02/12/2018. Throwing objects. Exceptions
ECE 150 Fundamentals of Programming Outline 2 In this lesson, we will: See that we can throw objects Know that there are classes defined in the standard template library These classes allow more information
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 informationObject-Oriented Programming for Scientific Computing
Object-Oriented Programming for Scientific Computing Smart Pointers and Constness Ole Klein Interdisciplinary Center for Scientific Computing Heidelberg University ole.klein@iwr.uni-heidelberg.de Summer
More informationValue vs. Entity Objects, Information Hiding
CS 247: Software Engineering Principles Value vs. Entity Objects, Information Hiding Readings: Eckel, Vol. 1 Ch. 5 Hiding the Implementation U Waterloo CS247 (Spring 2017) p.1/12 Entity vs. Value Objects
More informationObject Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
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 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 informationC++ Programming Lecture 7 Software Engineering Group
C++ Programming Lecture 7 Software Engineering Group Philipp D. Schubert Contents 1. Template metaprogramming 2. Variadic template arguments 3. Smart pointer Template metaprogramming Template metaprogramming
More informationCSE 333 Lecture smart pointers
CSE 333 Lecture 14 -- smart pointers Hal Perkins Department of Computer Science & Engineering University of Washington Administrivia Midterm Friday - Review in sections this week - Closed book; topic list
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 informationCOMP6771 Advanced C++ Programming
1. COMP6771 Advanced C++ Programming Week 4 Part One: (continued) and 2016 www.cse.unsw.edu.au/ cs6771 2. Inline Constructors, Accessors and Mutators Question (from 2015): In the week 3 examples, constructors
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 informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Resource Management Memory, smart pointers and RAII Resource management The most
More informationLaboratorio di Tecnologie dell'informazione
Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Resource Management Memory, smart pointers and RAII Resource management The most
More informationCSC 330 Object-Oriented Programming. Exception Handling CSC 330
Object-Oriented Programming Exception Handling 1 C++ Exception Handling Topics Exception Handling C++ Exception Handling Basics Throwing and Catching Exceptions Constructors, Destructors and Exceptions
More informationEvolution of Programming Languages
Evolution of Programming Languages 40's machine level raw binary 50's assembly language names for instructions and addresses very specific to each machine 60's high-level languages: Fortran, Cobol, Algol,
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 informationLecture 9 Assertions and Error Handling CS240
Lecture 9 Assertions and Error Handling CS240 The C preprocessor The C compiler performs Macro expansion and directive handling Preprocessing directive lines, including file inclusion and conditional compilation,
More informationAIMS Embedded Systems Programming MT 2017
AIMS Embedded Systems Programming MT 2017 Object-Oriented Programming with C++ Daniel Kroening University of Oxford, Computer Science Department Version 1.0, 2014 Outline Classes and Objects Constructors
More informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 20 November 12, 2018 CPSC 427, Lecture 20, November 12, 2018 1/26 Rethrowing Exceptions Uncaught Exceptions Singleton Design Pattern Smart
More informationException Handling Pearson Education, Inc. All rights reserved.
1 16 Exception Handling 2 16.1 Introduction Exceptions Indicate problems that occur during a program s execution Occur infrequently Exception handling Can resolve exceptions Allow a program to continue
More information