Chapter 7 Constructors and Other Tools. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo

Similar documents
Chapter 7. Constructors and Other Tools. Copyright 2016 Pearson, Inc. All rights reserved.

Ch 7. Constructors and Other Tools

Chapter 8. Operator Overloading, Friends, and References. Copyright 2010 Pearson Addison-Wesley. All rights reserved

by Pearson Education, Inc. All Rights Reserved. 2

Chapter 10 Pointers and Dynamic Arrays. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

Programming in C. main. Level 2. Level 2 Level 2. Level 3 Level 3

PIC 10A. Lecture 15: User Defined Classes

Chapter 10. Pointers and Dynamic Arrays. Copyright 2016 Pearson, Inc. All rights reserved.

Chapter 17: Linked Lists

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

More C++ : Vectors, Classes, Inheritance, Templates. with content from cplusplus.com, codeguru.com

Algorithms for Arrays Vectors Pointers CS 16: Solving Problems with Computers I Lecture #14

Copy Constructors & Destructors

Starting Savitch Chapter 10. A class is a data type whose variables are objects. Some pre-defined classes in C++ include int,

See the CS 2704 notes on C++ Class Basics for more details and examples. Data Structures & OO Development I

C++ Important Questions with Answers

Protection Levels and Constructors The 'const' Keyword

III. Classes (Chap. 3)

And Even More and More C++ Fundamentals of Computer Science

More C++ : Vectors, Classes, Inheritance, Templates

class Polynomial { public: Polynomial(const string& N = "no name", const vector<int>& C = vector<int>());... };

AN OVERVIEW OF C++ 1

C++ Objects Overloading Other C++ Peter Kristensen

Chapter 17: Linked Lists

Intro to OOP Visibility/protection levels and constructors Friend, convert constructor, destructor Operator overloading a<=b a.

Introduction to Java. Handout-1d. cs402 - Spring

Friends and Overloaded Operators

OOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.

Friends and Overloaded Operators

Pointers. Developed By Ms. K.M.Sanghavi

Lecture 18 Tao Wang 1

Object Oriented Software Design II

Chapter 10 Introduction to Classes

Lesson 13 - Vectors Dynamic Data Storage

C++ Functions. Procedural-based Programming. what s a functions

Cpt S 122 Data Structures. Templates

CSE 374 Programming Concepts & Tools. Hal Perkins Spring 2010

Lecture-5. Miscellaneous topics Templates. W3101: Programming Languages C++ Ramana Isukapalli

Software Design and Analysis for Engineers

Exercise 6.2 A generic container class

I m sure you have been annoyed at least once by having to type out types like this:

Ch 8. Operator Overloading, Friends, and References

Implicit Evaluation of auto Variables and Arguments

COEN244: Class & function templates

Dynamic Data Structures

double d0, d1, d2, d3; double * dp = new double[4]; double da[4];

Object Oriented Programming in C#

Review: C++ Basic Concepts. Dr. Yingwu Zhu

American National Standards Institute Reply to: Josee Lajoie

Comp 249 Programming Methodology

QUIZ. What is wrong with this code that uses default arguments?

Constructors for classes

Pointer Basics. Lecture 13 COP 3014 Spring March 28, 2018

Lecture Topics. Administrivia

Cpt S 122 Data Structures. Course Review Midterm Exam # 2

Chapter 6 Structures and Classes. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo

Implementing Abstract Data Types (ADT) using Classes

Chapter 4 Defining Classes I

(5-1) Object-Oriented Programming (OOP) and C++ Instructor - Andrew S. O Fallon CptS 122 (February 4, 2019) Washington State University

Interview Questions of C++

C++ 8. Constructors and Destructors

Advanced Systems Programming

AIMS Embedded Systems Programming MT 2017

CS 251 INTERMEDIATE SOFTWARE DESIGN SPRING C ++ Basics Review part 2 Auto pointer, templates, STL algorithms

CS11 Advanced C++ Spring 2018 Lecture 2

Classes and Objects. Class scope: - private members are only accessible by the class methods.

Object Class. EX: LightSwitch Class. Basic Class Concepts: Parts. CS257 Computer Science II Kevin Sahr, PhD. Lecture 5: Writing Object Classes

1/29/2011 AUTO POINTER (AUTO_PTR) INTERMEDIATE SOFTWARE DESIGN SPRING delete ptr might not happen memory leak!

Copyright 2003 Pearson Education, Inc. Slide 1

RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS

7.1 Optional Parameters

COP4530 Data Structures, Algorithms and Generic Programming Recitation 4 Date: September 14/18-, 2008

Introduction to C++ Systems Programming

Modern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi

EL2310 Scientific Programming

C++ TEMPLATES. Templates are the foundation of generic programming, which involves writing code in a way that is independent of any particular type.

Short Notes of CS201

QUIZ. 1. Explain the meaning of the angle brackets in the declaration of v below:

Object-Oriented Programming, Iouliia Skliarova

Vectors and Pointers CS 16: Solving Problems with Computers I Lecture #13

(5 2) Introduction to Classes in C++ Instructor - Andrew S. O Fallon CptS 122 (February 7, 2018) Washington State University

Chapter 16. Templates. Copyright 2010 Pearson Addison-Wesley. All rights reserved

CS201 - Introduction to Programming Glossary By

7 TEMPLATES AND STL. 7.1 Function Templates

Tell compiler ValueType is a generic type. public: void push_back(const ValueType& elem); // rest of implementation }

STL in Action: Helper Algorithms

SFU CMPT Topic: Class Templates

THE NAME OF THE CONSTRUCTOR AND DESTRUCTOR(HAVING (~) BEFORE ITS NAME) FUNCTION MUST BE SAME AS THE NAME OF THE CLASS IN WHICH THEY ARE DECLARED.

G52CPP C++ Programming Lecture 13

More on Functions. Lecture 7 COP 3014 Spring February 11, 2018

Tokens, Expressions and Control Structures

Slide Set 14. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary

CSE 303: Concepts and Tools for Software Development

Copyright 2007 Pearson Addison-Wesley Copyright 2018 Aiman Hanna All rights reserved

Programming 2. Object Oriented Programming. Daniel POP

Object-Oriented Principles and Practice / C++

Name: Username: I. 20. Section: II. p p p III. p p p p Total 100. CMSC 202 Section 06 Fall 2015

Arrays. Arizona State University 1

CS313D: ADVANCED PROGRAMMING LANGUAGE. Lecture 3: C# language basics II

Transcription:

Chapter 7 Constructors and Other Tools 1

Learning Objectives Constructors Definitions Calling More Tools const parameter modifier Inline functions Static member data Vectors Introduction to vector class 2

Constructors Initialization of objects Initialize some or all member variables Other actions possible as well A special kind of member function Automatically called when object declared Very useful tool Key principle of OOP 3

Constructor Definitions Constructors defined like any member function Except: 1. Must have same name as class 2. Cannot return a value; not even void! 4

Constructor Definition Example Class definition with constructor: class DayOfYear { public: DayOfYear(int monthvalue, int dayvalue); //Constructor initializes month and day void input(); void output(); private: int month; int day; } 5

Constructor Notes Notice name of constructor: DayOfYear Same name as class itself! Constructor declaration has no return-type Not even void! Constructor in public section It s called when objects are declared If private, could never declare objects! 6

Calling Constructors Declare objects: DayOfYear date1(7, 4), date2(5, 5); Objects are created here Constructor is called Values in parens passed as arguments to constructor Member variables month, day initialized: date1.month à 7 date2.month à 5 date1.day à 4 date2.day à 5 7

Constructor Equivalency Consider: DayOfYear date1, date2 date1.dayofyear(7, 4); date2.dayofyear(5, 5); // ILLEGAL! // ILLEGAL! Seemingly OK CANNOT call constructors like other member functions! 8

Constructor Code Constructor definition is like all other member functions: DayOfYear::DayOfYear(int monthvalue, int da yvalue) { month = monthvalue; day = dayvalue; } Note same name around :: Clearly identifies a constructor Note no return type Just as in class definition 9

Alternative Definition Previous definition equivalent to: DayOfYear::DayOfYear(int monthvalue, int dayvalue) : month(monthvalue), day(dayvalue) { } Third line called "Initialization Section" Body left empty Preferable definition version 10

Constructor Additional Purpose Not just initialize data Body doesn t have to be empty In initializer version Validate the data! Ensure only appropriate data is assigned to class private member variables Powerful OOP principle 11

Overloaded Constructors Can overload constructors just like other functions Recall: a signature consists of: Name of function Parameter list Provide constructors for all possible argument-lists Particularly "how many" 12

Class with Constructors Example: Display 7.1 Class with Constructors (1 of 3) 13

Class with Constructors Example: Display 7.1 Class with Constructors (2 of 3) 14

Class with Constructors Example: Display 7.1 Class with Constructors (3 of 3) 15

Constructor with No Arguments Can be confusing Standard functions with no arguments: Called with syntax: callmyfunction(); Including empty parentheses Object declarations with no "initializers": DayOfYear date1; DayOfYear date(); // This way! // NO! What is this really? Compiler sees a function declaration/prototype! Yes! Look closely! 16

Explicit Constructor Calls Can also call constructor AGAIN After object declared Recall: constructor was automatically called then Can call via object s name; standard member function call Convenient method of setting member variables Method quite different from standard member function call 17

Explicit Constructor Call Example Such a call returns "anonymous object" Which can then be assigned In Action: DayOfYear holiday(7, 4); Constructor called at object s declaration Now to "re-initialize": holiday = DayOfYear(5, 5);» Explicit constructor call» Returns new "anonymous object"» Assigned back to current object 18

Default Constructor Defined as: constructor w/ no arguments One should always be defined Auto-Generated? Yes & No If no constructors AT ALL are defined à Yes If any constructors are defined à No If no default constructor: Cannot declare: MyClass myobject; With no initializers 19

Class Type Member Variables Class member variables can be any type Including objects of other classes! Type of class relationship Powerful OOP principle Need special notation for constructors So they can call "back" to member object s constructor 20

Class Member Variable Example: Display 7.3 A Class Member Variable (1 of 5) 21

Class Member Variable Example: Display 7.3 A Class Member Variable (2 of 5) 22

Class Member Variable Example: Display 7.3 A Class Member Variable (3 of 5) 23

Class Member Variable Example: Display 7.3 A Class Member Variable (4 of 5) 24

Class Member Variable Example: Display 7.3 A Class Member Variable (5 of 5) 25

Parameter Passing Methods Efficiency of parameter passing Call-by-value Requires copy be made à Overhead Call-by-reference Placeholder for actual argument Most efficient method Negligible difference for simple types For class types à clear advantage Call-by-reference desirable Especially for "large" data, like class types 26

The const Parameter Modifier Large data types (typically classes) Desirable to use pass-by-reference Even if function will not make modifications Protect argument Use constant parameter Also called constant call-by-reference parameter Place keyword const before type Makes parameter "read-only" Attempt to modify parameter results in compiler error 27

Use of const All-or-nothing If no need for function modifications Protect parameter with const Protect ALL such parameters This includes class member function parameters 28

Static Members Static member variables All objects of class "share" one copy One object changes it à all see change Useful for "tracking" How often a member function is called How many objects exist at given time Place keyword static before type Copyright 2017 Pearson Education, Ltd. All rights 7-29 29

Static Functions Member functions can be static If no access to object data needed And still "must" be member of the class Make it a static function Can then be called outside class From non-class objects: E.g., Server::getTurn(); As well as via class objects Standard method: myobject.getturn(); Can only use static data, functions! 30

Static Members Example: Display 7.6 Static Members (1 of 4) 31

Static Members Example: Display 7.6 Static Members (2 of 4) 32

Static Members Example: Display 7.6 Static Members (3 of 4) 33

Static Members Example: Display 7.6 Static Members (4 of 4) 34

Vectors Vector Introduction Recall: arrays are fixed size Vectors: "arrays that grow and shrink" During program execution Formed from Standard Template Library (STL) Using template class 35

Vector Basics Similar to array: Has base type Stores collection of base type values Declared differently: Syntax: vector<base_type> Indicates template class Any type can be "plugged in" to Base_Type Produces "new" class for vectors with that type Example declaration: vector<int> v; 36

Vector Use vector<int> v; "v is vector of type int" Calls class default constructor Empty vector object created Indexed like arrays for access But to add elements: Must call member function push_back Member function size() Returns current number of elements 37

Vector Example: Display 7.7 Using a Vector (1 of 2) 38

Vector Example: Display 7.7 Using a Vector (2 of 2) 39

Vector Efficiency Member function capacity() Returns memory currently allocated Not same as size() Capacity typically > size Automatically increased as needed If efficiency critical: Can set behaviors manually v.reserve(32); //sets capacity to 32 v.reserve(v.size()+10); //sets capacity to 10 more than size 40