C++ Functions. Procedural-based Programming. what s a functions
|
|
- Tobias Eaton
- 5 years ago
- Views:
Transcription
1 C++ Functions Fred Kuhns Applied Research Laboratory, Department of Computer Science and Engineering, Washington University in St. Louis Washington WASHINGTON UNIVERSITY IN ST LOUIS Procedural-based Programming Every C++ program contains (starts with) a main() function. The main() function may in turn call other user defined funtions Functions encapsulates an algorithm which operates on data passed in as parameters or explicit access to globally scoped data An object s scope determines its visibility (where it can be used) C++ defines several useful facilities related to functions: overloaded function definitions function prototypes exceptions STL and generic algorithms Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 2 what s a functions Function prototype <return type> function_name(<parameter type list>); Function definition <return type> function_name(<parameter list>){<function body>} inline ed functions inline <return type> function_name(<parameter_list>){<function body>} Example protocype and definition int min(int, int); int min(int a, int b) {return (a < b? a : b);} may return any built-in or user defined type. Can not return and array or function (but may return a pointer to one) Example function return types: void print_all(myclass_t c); Date &today(void); Node *get_last(head &); float sq(float, float); Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 3
2 Function arguments C++ is strongly typed: compiler verifies arguments are of the proper type (at compile time, not run time) Arguments: Arguments (and local variables) are allocated space on the run-time stack (function specific storage: activation record) Non-reference arguments are initialized by copy. Default passed-by-value, but may explicitly declare parameters to be passed by references. int min1(int a, int b){a = a<b?a:b;return a} int min2(int& a, int b){a = a<b?a:b;return a} Arrays as arguments int sum(int a[]); but how many elements in a? can use a vector, pass size or protocol int sum(vector<int> vec); // can use vec.size() int sum(int *a, size_t len); // there are len elements in a int sum(int *a) { int sum=0; while(*a!= -1) sum += *a; return *a;} Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 4 More bout functions Return value is pass-by-value, unless return type is void return; // nothing is returned return f; // a copy of object f is returned What about this defintion? value_t &lookup(key_t key) { code to locate key in table ; return table{key}.value}; Is there anything wrong with the following? myclass &getval(void){myclass m; ; return m}; Watch for side effects int &getval(const vector<int> &v, size_type i){return v[i]}; Use const to guard against unexpected resultsconst int &getval(vector<int> &v, int i){return v[i]}; function pointers int getval(int *a, int i){return v[i]}; int (*fp)(int *, int), x[10]; fp = getval; fp(x, 10); Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 5 Argument Examples Functions specifying const arguments. Does the const for parameter a make a difference to the caller? When considering viable functions during overload resolution? int fn(const int a) {return 2 * a;} int x = 4, w = fn(x); // ok const variables int fn(int a) {a = 5 * 4; return a;} const int x = 5; int w = fn(x); // error Overhead in function calls struct X_t {int st_; size_t len_; int buf_[64];} int sum(x_t x); X_t xx; /* fill in xx */ ; int s = sum(xx); Default behavior is to make a copy of the argument, in the above case this would be very expensive. Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 6
3 Local Variables local variables are placed on the stack, consequently every function call receives its own copy of local variables int sum(int x) {int sum = 0; sum += x; return sum;} // always returns the value of x You can declare a local variable to be static: int sum(int x) { static int sum = 0; sum += x; return sum; } // keeps a running total Declaring a local variable to be static causes a single statically allocated object to be created and used. there is only one object it retains it s value across function calls only initialized once. Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 7 Call by Reference Attempt 2: struct X_t {int st; size_t len; int buf[64];} int sum(x_t &x); X_t xx = { }; int s = sum(xx); In this case the compile must only bind the functions local argument symbol to the address of the caller s argument. Much cheaper than the earlier copy. We could also do this with pointers struct X_t {int st; size_t len; int buf[64];} int sum(x_t *x); X_t xx = { }; int s = sum(&xx); Additional advantage to references is some classes may not permit the copy operation. We can use similar reasoning for using references (or pointers) for return values. Generally in C++ you should prefer references over pointers. Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 8 More on references Using const references int fn(const X_t x); Generally const references are the safest way to go for a few reasons: I can be called with both lvalues and rvalues, specifically it can be called with temporary objects. assures the caller that their object will not be modified therefore avoiding unexpected side effects. the function may be used for both const and non-const objects. Examples form the book: int incr(int &v) {return ++val;} int main() {short v1 = 0; const int v2 = 42; int v3 = incr(v1); v3 = incr(v2); v3 = incr(0); v3 = incr(v1+v2); int v4 = incr(v3); } Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 9
4 Default Argument values You may provide default initializers for argument values int fn(int x, int y=0, int z=0); int a = fn(2); // y and z initialized to 0 int b = fn(3, 4); // z initialized to 0 c = fn(2, 0, 0); // all values explicit int d = fn(); // error, at least the first arg // must be specified Arguments are associated with parameters by position int fn(int x, double y=0, char z=0); int a = fn(23, c, 5.6); // logic error Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 10 inlining (from ~cdgill s notes) A function call uses the program call stack 1. Stack frame pushed when the call is made 2. Execution jumps to the function s code block 3. Function s code block is executed 4. Execution returns to just after where call was made 5. Stack frame is popped This incurs a (small) performance cost Copying arguments, other info into the stack frame Stack frame management Copying function result back out of the stack fr Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 11 Inlining (~cdgill) Considerations: If the function body is small, Computer might do more work manipulating the stack frame than in the actual function Classic computer science tradeoff Alternatives: can ask the compiler to use function inlining Intention: a directive, sometimes just a request Compiler makes an in line copy of the code at each place where it s called Code is inserted once for every function call made Especially good for small repetitive function calls Class/struct member accessors and mutators Empty or very simple implementations Benefits and Costs of Inlining call frequency, space requirements, performance Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 12
5 Inlining (~cdgill) The inline keyword is just a suggestion to the compiler Increase portability: make inlining requests optional using preprocessor directives Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 13 Member Functions Similar to standard functions, you must specify the return type, name, parameter list and body. Function prototype must appear in the class body. The function body may be defined separately. If default constructor is not specified then one is generated for you. (synthesized default constructor) class Complex { private: double re_; double im_; public: // Constructor initializer list : re_(0), im_(0) Complex() : re_(0), im_(0) {}; // Default constructor Complex(const Complex& c) : re_(c.re_), im_(c.im_) {}; // copy constructor Complex(double a, double b = 0) : re_(a), im_(b) {}; double real() const {return re_;} void real(double r) {re_ = r;} }; double imag() const {return im_;} void imag(double i) {im_ = i;} Complex & operator+=(const Complex &rhs){re_ += rhs.re_; im_ += rhs.im_;return *this;} Complex & operator-=(const Complex &rhs) {this->re_ -= rhs.re_; this->im_ -= rhs.im_; return *this;} Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 14 Overloading Same operator or function name but with different arguments Both operators and functions can be overloaded Signature consists of operator/function name and the number and types of its arguments in order E.g., add(int, long) and add(long, int) have different signatures Overriding a base class method is also a form of overloading But definitions are separated by scopes Compiler can distinguish (dynamically or statically, depending on whether virtual or not) Overloading is resolved by Finding all possible matches based on passed arguments Finding the best match among those Signature does not depend on return type So, overloading can t be resolved by return type alone Functions declared in different non-namespace scopes do not overload with namespaces using declarations can be used to control overloading Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 15
6 Finding a match Overload resolution, return type is not considered so result is not context dependent: 1. Best match: finding only one meeting all criteria 2. No match: not finding any matching functions 3. Ambiguous: more than one match is found The 3 steps 1. Find candidates: same name, visible in the current scope 2. Viable functions: have the same number of parameters and the types either match or are convertible. 3. Determine the best match: of the viable functions select the one with the closest matching argument types. With multiple arguments there is a match if 1. match for each argument is no worse than match required for any other viable function and 2. there is at least one argument with a better match than all other viable functions. Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 16 Argument Type Conversions Ranking of conversions 1. Exact match: exact or trivial conversions 1. no conversion 2. array name to pointer 3. function name to function pointer 4. T to const T 2. Promotion: See text for a complete list 1. (bool, char, short) to int -- signed and unsigned 2. float to double 3. double to long double 3. Standard conversion: see book for a complete list 1. int to double 2. double to int 3. Derived* to Base* 4. T* to void* 5. int to unsigned int 4. Class-type conversion: user defined conversions 5. match using elipses in function declaration const parameters only matter for reference and pointer arguments. Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 17 Helping the Compiler out Overloaded function void f1(char); void f1(long); void f2(char*); void f2(int*); void k(int i) { f1(i); // ambiguous: i promotes to int, and // has conversions to both char and long. f2(0); // ambiguous: literal is int or void pointer with // conversions to both char* and int* } To resolve the ambiguity you could add a wrapper function or specify the type: inline void f1(int n) {f1(long(n));} f2(static_cast<int*>(0)); Fred Kuhns (2/9/2006) CS422 Operating Systems Concepts 18
OBJECT ORIENTED PROGRAMMING USING C++
OBJECT ORIENTED PROGRAMMING USING C++ Overview of C++ Overloading Overloading occurs when the same operator or function name is used with different signatures Both operators and functions can be overloaded
More informationC++ C and C++ C++ fundamental types. C++ enumeration. To quote Bjarne Stroustrup: 5. Overloading Namespaces Classes
C++ C and C++ 5. Overloading Namespaces Classes Alastair R. Beresford University of Cambridge Lent Term 2007 To quote Bjarne Stroustrup: C++ is a general-purpose programming language with a bias towards
More informationImplementing Abstract Data Types (ADT) using Classes
Implementing Abstract Data Types (ADT) using Classes Class Definition class classname { public: //public member functions private: //private data members and member functions }; // Note the semicolon!
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 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 informationOutline. User-dened types Categories. Constructors. Constructors. 4. Classes. Concrete classes. Default constructor. Default constructor
Outline EDAF50 C++ Programming 4. Classes Sven Gestegård Robertz Computer Science, LTH 2018 1 Classes the pointer this const for objects and members Copying objects friend inline 4. Classes 2/1 User-dened
More informationSee the CS 2704 notes on C++ Class Basics for more details and examples. Data Structures & OO Development I
Polynomial Class Polynomial(); Polynomial(const string& N, const vector& C); Polynomial operator+(const Polynomial& RHS) const; Polynomial operator-(const Polynomial& RHS) const; Polynomial operator*(const
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 informationProgramming in C and C++
Programming in C and C++ 5. C++: Overloading, Namespaces, and Classes Dr. Neel Krishnaswami University of Cambridge (based on notes from and with thanks to Anil Madhavapeddy, Alan Mycroft, Alastair Beresford
More informationOBJECT ORIENTED PROGRAMMING USING C++ CSCI Object Oriented Analysis and Design By Manali Torpe
OBJECT ORIENTED PROGRAMMING USING C++ CSCI 5448- Object Oriented Analysis and Design By Manali Torpe Fundamentals of OOP Class Object Encapsulation Abstraction Inheritance Polymorphism Reusability C++
More informationIntroduction to Programming Using Java (98-388)
Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;
More informationFast Introduction to Object Oriented Programming and C++
Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming
More informationTokens, Expressions and Control Structures
3 Tokens, Expressions and Control Structures Tokens Keywords Identifiers Data types User-defined types Derived types Symbolic constants Declaration of variables Initialization Reference variables Type
More informationProgramming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur
Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Programming in C++ Indian Institute of Technology, Kharagpur Lecture 14 Default Parameters and Function Overloading
More informationInterview Questions of C++
Interview Questions of C++ Q-1 What is the full form of OOPS? Ans: Object Oriented Programming System. Q-2 What is a class? Ans: Class is a blue print which reflects the entities attributes and actions.
More informationObject Oriented Programming in C#
Introduction to Object Oriented Programming in C# Class and Object 1 You will be able to: Objectives 1. Write a simple class definition in C#. 2. Control access to the methods and data in a class. 3. Create
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 informationOverload Resolution. Ansel Sermersheim & Barbara Geller ACCU / C++ June 2018
Ansel Sermersheim & Barbara Geller ACCU / C++ June 2018 1 Introduction Definition of Function Overloading Determining which Overload to call How Overload Resolution Works Standard Conversion Sequences
More informationG52CPP C++ Programming Lecture 13
G52CPP C++ Programming Lecture 13 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last lecture Function pointers Arrays of function pointers Virtual and non-virtual functions vtable and
More informationCS3215. Outline: 1. Introduction 2. C++ language features 3. C++ program organization
CS3215 C++ briefing Outline: 1. Introduction 2. C++ language features 3. C++ program organization CS3215 C++ briefing 1 C++ versus Java Java is safer and simpler than C++ C++ is faster, more powerful than
More informationModern C++ for Computer Vision and Image Processing. Igor Bogoslavskyi
Modern C++ for Computer Vision and Image Processing Igor Bogoslavskyi Outline Move semantics Classes Operator overloading Making your class copyable Making your class movable Rule of all or nothing Inheritance
More informationOverload Resolution. Ansel Sermersheim & Barbara Geller Amsterdam C++ Group March 2019
Ansel Sermersheim & Barbara Geller Amsterdam C++ Group March 2019 1 Introduction Prologue Definition of Function Overloading Determining which Overload to call How Works Standard Conversion Sequences Examples
More informationAppendix. Grammar. A.1 Introduction. A.2 Keywords. There is no worse danger for a teacher than to teach words instead of things.
A Appendix Grammar There is no worse danger for a teacher than to teach words instead of things. Marc Block Introduction keywords lexical conventions programs expressions statements declarations declarators
More informationInstantiation of Template class
Class Templates Templates are like advanced macros. They are useful for building new classes that depend on already existing user defined classes or built-in types. Example: stack of int or stack of double
More informationObject-Oriented Principles and Practice / C++
Object-Oriented Principles and Practice / C++ Alice E. Fischer May 13, 2013 OOPP / C++ Lecture 7... 1/27 Construction and Destruction Allocation and Deallocation Move Semantics Template Classes Example:
More informationChapter 2. Procedural Programming
Chapter 2 Procedural Programming 2: Preview Basic concepts that are similar in both Java and C++, including: standard data types control structures I/O functions Dynamic memory management, and some basic
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 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 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 informationObject-Oriented Principles and Practice / C++
Object-Oriented Principles and Practice / C++ Alice E. Fischer September 26, 2016 OOPP / C++ Lecture 4... 1/33 Global vs. Class Static Parameters Move Semantics OOPP / C++ Lecture 4... 2/33 Global Functions
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 informationIII. Classes (Chap. 3)
III. Classes III-1 III. Classes (Chap. 3) As we have seen, C++ data types can be classified as: Fundamental (or simple or scalar): A data object of one of these types is a single object. int, double, char,
More informationG52CPP C++ Programming Lecture 9
G52CPP C++ Programming Lecture 9 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last lecture const Constants, including pointers The C pre-processor And macros Compiling and linking And
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 informationQUIZ How do we implement run-time constants and. compile-time constants inside classes?
QUIZ How do we implement run-time constants and compile-time constants inside classes? Compile-time constants in classes The static keyword inside a class means there s only one instance, regardless of
More informationclass Polynomial { public: Polynomial(const string& N = "no name", const vector<int>& C = vector<int>());... };
Default Arguments 1 When declaring a C++ function, you may optionally specify a default value for function parameters by listing initializations for them in the declaration: class Polynomial { public:
More informationAP Computer Science Chapter 10 Implementing and Using Classes Study Guide
AP Computer Science Chapter 10 Implementing and Using Classes Study Guide 1. A class that uses a given class X is called a client of X. 2. Private features of a class can be directly accessed only within
More informationExceptions. CandC++ 7. Exceptions Templates. Throwing exceptions. Conveying information
Exceptions CandC++ 7. Exceptions Templates Stephen Clark University of Cambridge (heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford and Bjarne Stroustrup) Michaelmas
More information(heavily based on last year s notes (Andrew Moore) with thanks to Alastair R. Beresford. 7. Exceptions Templates 2/1. Throwing exceptions 14 }
Exceptions Some code (e.g. a library module) may detect an error but not know what to do about it; other code (e.g. a user module) may know how to handle it C++ provides exceptions to allow an error to
More informationChapter 3 Function Overloading
Chapter 3 Function Overloading Function Overloading. Calling Overloaded Function. Function Overloading When Several Function declaration are specified for a single function name in the same scope, the
More informationC and C++ 7. Exceptions Templates. Alan Mycroft
C and C++ 7. Exceptions Templates Alan Mycroft University of Cambridge (heavily based on previous years notes thanks to Alastair Beresford and Andrew Moore) Michaelmas Term 2013 2014 1 / 20 Exceptions
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 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 information1. Describe History of C++? 2. What is Dev. C++? 3. Why Use Dev. C++ instead of C++ DOS IDE?
1. Describe History of C++? The C++ programming language has a history going back to 1979, when Bjarne Stroustrup was doing work for his Ph.D. thesis. One of the languages Stroustrup had the opportunity
More informationKapil Sehgal PGT Computer. Science Ankleshwar Gujarat
Classes Chapter 4 Classes and Objects Data Hiding and Encapsulation Function in a Class Using Objects Static Class members Classes Class represents a group of Similar objects A class is a way to bind the
More informationCS304 Object Oriented Programming Final Term
1. Which of the following is the way to extract common behaviour and attributes from the given classes and make a separate class of those common behaviours and attributes? Generalization (pg 29) Sub-typing
More informationCHAPTER 4 FUNCTIONS. 4.1 Introduction
CHAPTER 4 FUNCTIONS 4.1 Introduction Functions are the building blocks of C++ programs. Functions are also the executable segments in a program. The starting point for the execution of a program is main
More informationNote 12/1/ Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance...
CISC 2000 Computer Science II Fall, 2014 Note 12/1/2014 1 Review of Inheritance Practice: Please write down 10 most important facts you know about inheritance... (a) What s the purpose of inheritance?
More informationCpt S 122 Data Structures. Introduction to C++ Part II
Cpt S 122 Data Structures Introduction to C++ Part II Nirmalya Roy School of Electrical Engineering and Computer Science Washington State University Topics Objectives Defining class with a member function
More informationObject-Oriented Principles and Practice / C++
Object-Oriented Principles and Practice / C++ Alice E. Fischer October 10, 2016 OOPP / C++ Lecture 7... 1/15 Construction and Destruction Kinds of Constructors Move Semantics OOPP / C++ Lecture 7... 2/15
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 informationC++ Review. CptS 223 Advanced Data Structures. Larry Holder School of Electrical Engineering and Computer Science Washington State University
C++ Review CptS 223 Advanced Data Structures Larry Holder School of Electrical Engineering and Computer Science Washington State University 1 Purpose of Review Review some basic C++ Familiarize us with
More informationC The new standard
C++11 - The new standard Lars Kühne Institut für Informatik Lehrstuhl für theoretische Informatik II Friedrich-Schiller-Universität Jena January 16, 2013 Overview A little bit of history: C++ was initially
More informationCS240: Programming in C
CS240: Programming in C Lecture 5: Functions. Scope of variables. Program structure. Cristina Nita-Rotaru Lecture 5/ Fall 2013 1 Functions: Explicit declaration Declaration, definition, use, order matters.
More informationEL6483: Brief Overview of C Programming Language
EL6483: Brief Overview of C Programming Language EL6483 Spring 2016 EL6483 EL6483: Brief Overview of C Programming Language Spring 2016 1 / 30 Preprocessor macros, Syntax for comments Macro definitions
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 informationOperating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst
Operating Systems CMPSCI 377, Lec 2 Intro to C/C++ Prashant Shenoy University of Massachusetts Amherst Department of Computer Science Why C? Low-level Direct access to memory WYSIWYG (more or less) Effectively
More informationChapter 7 Constructors and Other Tools. GEDB030 Computer Programming for Engineers Fall 2017 Euiseong Seo
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
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 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 informationMARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012
MARKING KEY The University of British Columbia MARKING KEY Computer Science 260 Midterm #1 Examination 12:30 noon, Tuesday, February 14, 2012 Instructor: K. S. Booth Time: 70 minutes (one hour ten minutes)
More informationG52CPP C++ Programming Lecture 7. Dr Jason Atkin
G52CPP C++ Programming Lecture 7 Dr Jason Atkin 1 This lecture classes (and C++ structs) Member functions inline functions 2 Last lecture: predict the sizes 3 #pragma pack(1) #include struct A
More informationCopy Control 2008/04/08. Programming Research Laboratory Seoul National University
Copy Control 2008/04/08 Soonho Kong soon@ropas.snu.ac.kr Programming Research Laboratory Seoul National University 1 Most of text and examples are excerpted from C++ Primer 4 th e/d. 2 Types control what
More informationDeclaration Syntax. Declarations. Declarators. Declaration Specifiers. Declaration Examples. Declaration Examples. Declarators include:
Declarations Based on slides from K. N. King Declaration Syntax General form of a declaration: declaration-specifiers declarators ; Declaration specifiers describe the properties of the variables or functions
More informationCOEN244: Class & function templates
COEN244: Class & function templates Aishy Amer Electrical & Computer Engineering Templates Function Templates Class Templates Outline Templates and inheritance Introduction to C++ Standard Template Library
More informationOperator Dot Wording
2016-10-16 Operator Dot Wording Bjarne Stroustrup (bs@ms.com) Gabriel Dos Reis (gdr@microsoft.com) Abstract This is the proposed wording for allowing a user-defined operator dot (operator.()) for specifying
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 informationCPSC 427: Object-Oriented Programming
CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 11 October 3, 2018 CPSC 427, Lecture 11, October 3, 2018 1/24 Copying and Assignment Custody of Objects Move Semantics CPSC 427, Lecture
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 informationSFU CMPT Topic: Class Templates
SFU CMPT-212 2008-1 1 Topic: Class Templates SFU CMPT-212 2008-1 Topic: Class Templates Ján Maňuch E-mail: jmanuch@sfu.ca Monday 3 rd March, 2008 SFU CMPT-212 2008-1 2 Topic: Class Templates Class templates
More informationIntroduction to Move Semantics in C++ C and C
Introduction to Move Semantics in C++ C++ 2011 and C++ 2014 Jean-Paul RIGAULT University of Nice - Sophia Antipolis Engineering School Computer Science Department Sophia Antipolis, France Contents of the
More informationCS201 Latest Solved MCQs
Quiz Start Time: 09:34 PM Time Left 82 sec(s) Question # 1 of 10 ( Start time: 09:34:54 PM ) Total Marks: 1 While developing a program; should we think about the user interface? //handouts main reusability
More informationChapter 4 Defining Classes I
Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the
More informationEL2310 Scientific Programming
Lecture 15: Inheritance and Polymorphism, STL (pronobis@kth.se) Overview Overview Lecture 15: Inheritance and Polymorphism, STL Wrap Up Additional Bits about Classes Overloading Inheritance Polymorphism
More informationQUIZ. Can you find 5 errors in this code?
QUIZ Can you find 5 errors in this code? QUIZ What (if anything) is wrong with this code? public: ; int Constructor argument need! QUIZ What is meant by saying that a variable hides another? I.e. have
More informationWelcome Back. CSCI 262 Data Structures. Hello, Let s Review. Hello, Let s Review. How to Review 1/9/ Review. Here s a simple C++ program:
Welcome Back CSCI 262 Data Structures 2 - Review What you learned in CSCI 261 (or equivalent): Variables Types Arrays Expressions Conditionals Branches & Loops Functions Recursion Classes & Objects Streams
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++ Coding Standards and Practices. Tim Beaudet March 23rd 2015
C++ Coding Standards and Practices Tim Beaudet (timbeaudet@yahoo.com) March 23rd 2015 Table of Contents Table of contents About these standards Project Source Control Build Automation Const Correctness
More informationCE221 Programming in C++ Part 1 Introduction
CE221 Programming in C++ Part 1 Introduction 06/10/2017 CE221 Part 1 1 Module Schedule There are two lectures (Monday 13.00-13.50 and Tuesday 11.00-11.50) each week in the autumn term, and a 2-hour lab
More informationAN OVERVIEW OF C++ 1
AN OVERVIEW OF C++ 1 OBJECTIVES Introduction What is object-oriented programming? Two versions of C++ C++ console I/O C++ comments Classes: A first look Some differences between C and C++ Introducing function
More informationCS11 Intro C++ Spring 2018 Lecture 5
CS11 Intro C++ Spring 2018 Lecture 5 C++ Abstractions C++ provides rich capabilities for creating abstractions class Complex { double re, im; public: Complex(double re, double im);... ; Would be nice if
More informationSeptember 10,
September 10, 2013 1 Bjarne Stroustrup, AT&T Bell Labs, early 80s cfront original C++ to C translator Difficult to debug Potentially inefficient Many native compilers exist today C++ is mostly upward compatible
More informationVALLIAMMAI ENGINEERING COLLEGE
VALLIAMMAI ENGINEERING COLLEGE SRM Nagar, Kattankulathur 603 203 DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING QUESTION BANK B.E. - Electrical and Electronics Engineering IV SEMESTER CS6456 - OBJECT ORIENTED
More informationthe gamedesigninitiative at cornell university Lecture 7 C++ Overview
Lecture 7 Lecture 7 So You Think You Know C++ Most of you are experienced Java programmers Both in 2110 and several upper-level courses If you saw C++, was likely in a systems course Java was based on
More informationBefore we dive in. Preprocessing Compilation Linkage
Templates Before we dive in Preprocessing Compilation Linkage 2 Motivation A useful routine to have is void swap( int& a, int &b ) int tmp = a; a = b; b = tmp; 3 Example What happens if we want to swap
More informationEECS168 Exam 3 Review
EECS168 Exam 3 Review Exam 3 Time: 2pm-2:50pm Monday Nov 5 Closed book, closed notes. Calculators or other electronic devices are not permitted or required. If you are unable to attend an exam for any
More informationCS110D: PROGRAMMING LANGUAGE I
CS110D: PROGRAMMING LANGUAGE I Computer Science department Lecture 7&8: Methods Lecture Contents What is a method? Static methods Declaring and using methods Parameters Scope of declaration Overloading
More information2 ADT Programming User-defined abstract data types
Preview 2 ADT Programming User-defined abstract data types user-defined data types in C++: classes constructors and destructors const accessor functions, and inline functions special initialization construct
More informationOperator overloading. Conversions. friend. inline
Operator overloading Conversions friend inline. Operator Overloading Operators like +, -, *, are actually methods, and can be overloaded. Syntactic sugar. What is it good for - 1 Natural usage. compare:
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 informationENERGY 211 / CME 211. Functions
ENERGY 211 / CME 211 Lecture 8 October 8, 2008 1 Functions So far, we have seen programs in which all code resides within a main function Complex programs consist of subprograms that perform particular
More information10. Functions (Part 2)
10.1 Overloaded functions 10. Functions (Part 2) In C++, two different functions can have the same name if their parameters are different; either because they have a different number of parameters, or
More informationRAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING QUESTION BANK UNIT I 2 MARKS
RAJIV GANDHI COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF INFORMATION TECHNOLOGY OBJECT ORIENTED PROGRAMMING YEAR/SEM:II & III UNIT I 1) Give the evolution diagram of OOPS concept. 2) Give some
More informationG Programming Languages Spring 2010 Lecture 4. Robert Grimm, New York University
G22.2110-001 Programming Languages Spring 2010 Lecture 4 Robert Grimm, New York University 1 Review Last week Control Structures Selection Loops 2 Outline Subprograms Calling Sequences Parameter Passing
More informationCMPT 117: Tutorial 1. Craig Thompson. 12 January 2009
CMPT 117: Tutorial 1 Craig Thompson 12 January 2009 Administrivia Coding habits OOP Header Files Function Overloading Class info Tutorials Review of course material additional examples Q&A Labs Work on
More informationTemplate Issue Resolutions from the Stockholm Meeting
96-0153/N0971 Template Issue Resolutions from the Stockholm Meeting 1 X3J16/96-0153 WG21/N0971 July 9 th, 1996 John H. Spicer, Edison Design Group Template Issue Resolutions from the Stockholm Meeting
More informationFibonacci in Lisp. Computer Programming: Skills & Concepts (CP1) Programming Languages. Varieties of Programing Language
Fibonacci in Lisp Computer Programming: Skills & Concepts (CP1) Programming Languages (defun fibonacci (n) (if (or (= n 0) (= n 1)) 1 (+ (fibonacci (- n 1)) (fibonacci (- n 2))))) 22nd November 2010 defun-
More informationOOPS Viva Questions. Object is termed as an instance of a class, and it has its own state, behavior and identity.
OOPS Viva Questions 1. What is OOPS? OOPS is abbreviated as Object Oriented Programming system in which programs are considered as a collection of objects. Each object is nothing but an instance of a class.
More informationClasses. Christian Schumacher, Info1 D-MAVT 2013
Classes Christian Schumacher, chschuma@inf.ethz.ch Info1 D-MAVT 2013 Object-Oriented Programming Defining and using classes Constructors & destructors Operators friend, this, const Example Student management
More information엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2015 EOM, HYEONSANG ALL RIGHTS RESERVED
엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University COPYRIGHTS 2015 EOM, HYEONSANG ALL RIGHTS RESERVED Outline - Object Oriented Programming (OOP) - Basic Terms -
More information