1 / 25

C++

C++. Lecture 2 Friday 11 July 2003. Chapter 3, Functions. built-in functions function prototype, function definition and use storage class and scope recursion inline function default argument, function overloading, template. Math Library Functions. #include <cmath> // to use math

cgustafson
Download Presentation

C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Lecture 2 Friday 11 July 2003

  2. Chapter 3, Functions • built-in functions • function prototype, function definition and use • storage class and scope • recursion • inline function • default argument, function overloading, template

  3. Math Library Functions • #include <cmath> // to use math // library • On Unix, special compiler flag is needed gxx file.cpp -lm • most math functions take double as argument and return double as value C.f. math.h

  4. Math Functions • ceil(x), cos(x), exp(x), fabs(x), floor(x), fmod(x,y), log(x), log10(x), pow(x,y), sin(x), sqrt(x), tan(x) • For some compilers (such as GNU C++), there are also some special functions, such as err function, bessel function etc. C.f. Fig.3.2 h

  5. Functions • Organization of Large Program • Separate tasks into functions • Group related functions in separate files. • Typical Program Prototypes; main() { … ;} func1() { …; } func2(int i, …) { … }

  6. Functions • Function prototype • function definition • use of function • argument passing in C++ C.f. Fig.3.3

  7. Function Prototypes • Format void maximum(int, int, int); • Location of function prototype in file • When can we omit function prototype? • Advantage of prototype

  8. Storage Classes • Storage class determines the period during which an identifier exists in memory • Four storage classes auto, register, extern, static C.f. Fig. 3.12

  9. Auto Storage Class • Local variables in functions or blocks. Auto storage class variables are created only when the block is active, and disappear when the block or function exits.

  10. Register Storage Class • Variable existence like auto. The register variable is a suggestion to the compiler to put the variable in a CPU register.

  11. Static Storage Class • Local static variable exists during the whole program executing, i.e., the variable retains its value between function calls. • However, the reference to the variable is local in the function or block.

  12. Extern Storage Class • Global variables and function names have the storage class extern. Extern storage class variable exists during the whole program execution.

  13. Scope Rules • The places in code segment that an identifier is visible: • function scope • file scope • block scope • function-prototype scope • class scope

  14. Storage Class and Scope • Storage class says when a variable exists • scope says where in program segment the variable is valid for reference

  15. Unary Scope Resolution Operator :: • Using ::, one can access an global variable even if it is over-shadowed by a local variable of the same name.

  16. Recursion • A function can also call itself, this is known as recursion • To avoid infinite recursion, one must have a terminating condition in the function • recursion v.s. iteration C.f. Fig.3.14

  17. Inline Functions • Advantage: function call overhead is eliminated, thus faster and less memory consuming • Disadvantage: the code is expanded during compilation so that executable file is large C.f. Fig. 3.19

  18. Call by Value v.s. Call by Reference • Call-by-value: the function takes/works on a copy of the original variable • Call-by-reference: the function works on the original variable passed by caller. C.f. Fig. 3.20

  19. Call by Reference int func(int &); // prototype int main() { func(x); // call as usual } int func(int &x) // x is ref to int { x = ..; // use x as usual }

  20. Call by Reference Using Pointer int func(int *); // prototype int main() { func(&x); // call as usual } int func(int *x) // x is ref to int { *x = ..; // use x as usual }

  21. Default Arguments • The right-most arguments, if omitted, take the default value • Default values are specified at the first occurrence (prototype or function definition) of the function C.f. Fig.3.23

  22. Function Overloading • Several functions of different argument types can use the same function name. E.g. we can define a function square to work on int as well as on double. • In fact, we need to write two functions to handle two cases. C.f. 3.25

  23. Function Template • A function definition with unspecified data type. • The type is determined according to its use at compile time.

  24. Exercise, p.243, 3.22 • Write a function that displays at the left margin of the screen a solid square of asterisks whose side is specified in integer parameter side. E.g. side = 4 displays **** **** **** ****

  25. Exercise, p.245, 3.32 & p.248, 3.45 • The greatest common divisor (GCD) of two integers is the largest integer that evenly divides each of the numbers. Write a function gcd() that returns the greatest common divisor of two integers.

More Related