-
Function Overloading–Functions–STRUCTURED PROGRAMMING Course Notes
Function Overloading C++ enables several functions fo the same name to be defined, as long as these functions have different sets of parameters (a.k.a.–different signatures). This capability is called function overloading. When an overloaded function is called, the C++ compiler selects the proper function by examining the number, types, and order of the arguments in the call. Overloaded functions are distinguished by their signatures (function name & parameter types). The compiler encodes each function identifier with the number & types of its parameters to enable type-safe linkage. Type-safe linage ensures that the proper overloaded function is called and that the types of the arguments conform to the types of the…
-
Unary Scope Resolution Operator–Functions–STRUCTURED PROGRAMMING Course Notes
Unary Scope Resolution Operator C++ provides the unary scope resolution operator ( :: ) to access a global variable when a local variable of the same name is in scope. This makes it possible to declare local & global variables of the same name. The unary scope resolution operator cannot be used to access a local variable of the same name in an outer block. A global variable can be accessed directly without the unary scope resolution operator if the name of the global variable is NOT the same as that of a local variable in scope. Tip: Always using the unary scope resolution operator ( :: ) to refer…
-
Default Arguments–Functions–STRUCTURED PROGRAMMING Course Notes
Default Arguments When a function is called repeatedly with the same arguments for a particular parameter, you can specify that such a parameter has a default argument. (default value to be passed to that parameter). When a program omits an argument for a parameter with a default argument, the compiler inserts the default value of that argument to be passed to the function call. Default arguments must be the rightmost (trailing) arguments in a function’s parameter list. Default arguments are typically specified in the function prototype. Note: Using default arguments can simplify writing function calls. However, some programmers feel that explicitly specifying all arguments is clearer. Note: If the default…
-
Inline Functions, References, & Reference Parameters–Functions–STRUCTURED PROGRAMMING Course Notes
In C++, an empty parameter list is specified by writing either ‘void’ or nothing in parenthesis. Ex: (void) -or- () Inline Functions Inline Functions–C++ provides inline functions to help reduce function call overhead–especially for small functions. Placing the qualifier ‘inline‘ before a function’s return type in the function definition “advises” the compiler to generate a copy of the function’s code in place to avoid a function call. Note: Any change to an ‘inline’ function requires all clients of the function to be recompiled. This can be significant in some program development & maintenance situations. Tip: The ‘inline’ qualifier should be used only with small, frequently used functions. Using ‘inline’ functions…
-
Function Call Stack & Activation Records–Functions–STRUCTURED PROGRAMMING Course Notes
Function Call Stack & Activation Records Stacks are known as ‘last-in, first-out‘ (LIFO) data structures–the last item pushed (inserted) on the stack is the first item popped (removed) from the stack. The function call stack supports the function call/return mechanism, & the creation, maintenance and destruction of each called function’s automatic variables. Each time a function calls another function, a stack frame, or an activation record, is pushed onto the stack containing the return address that the called function needs to return to the calling function, and the function call’s automatic variables & parameters. The stack frame exists as long as the called function is active. When the called function…
-
Scope Rules–Functions–STRUCTURED PROGRAMMING Course Notes
Scope Rules Unlike automatic variables, static local variables retain their values when the function in which they’re declared returns to its caller. An identifier declared outside any function or class has global namespace scope. Labels are the only identifiers with function scope. Labels can be used anywhere in the function in which they appear, but cannot be referenced outside the function body. (Labels are followed by a colon. ‘:’ ) Identifiers declared inside a block have local scope. Local scope begins at the identifiers declaration & ends at the terminating right brace (‘}’) of the block in which the identifier is declared. Identifiers in the parameter list of a function…
-
Storage Classes–Functions–STRUCTURED PROGRAMMING Course Notes
Storage Classes A storage class defines the scope (visibility) and life-time (existence) of variables and/or functions within a C++ program. C++ provides five storage-class specifiers: auto register extern mutable static An identifier’s storage class determines the period during which that identifier exists in memory. An identifier’s scope is where the identifier can be referenced in a program. And identifier’s linkage determines whether an identifier is known only in the source file where it’s declared, or across multiple files that are compiled then linked together. Note: Identifiers in C++ are the names assigned to variables and functions. The valid identifiers are declared using the alphabets from A to Z, a to…
-
Enumeration–Functions–STRUCTURED PROGRAMMING Course Notes
Enumeration Enumeration–an enumeration, introduced by the keyword ‘enum‘ and followed by a type name is a user-defined type. An enumeration is a set of named integer constants represented by identifiers. The values of these enumeration constants start at 0, unless specified otherwise, and increment by 1. A popular enumeration is: enum Months { Jan = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC }; where: ‘enum‘ is the ‘keyword‘ ‘Months’ is the ‘identifier‘ ‘JAN’ thru ‘DEC’ are the ‘enumeration constant names‘ …which creates user-defined type ‘Months’ with enumeration constants representing the months of the year. The first value is explicitly specified to start at 1, so…
-
Random Number Generation–Functions–STRUCTURED PROGRAMMING Course Notes
Random Number Generation rand(); a C++ Standard Library function that generates an unsigned integer between 0 and RAND_MAX (a symbolic constant defined in the <cstdlib> header file). The function prototype for the ‘rand’ function is in <cstdlib>. rand()%6 to produce integers specifically in the range 0 to 5, for a dice-rolling game, for example, we use the modulus operator(%). This is called scaling. The number 6 is called the “scaling factor”. We would then shift the range of numbers produced by adding 1 to our previous result. ex: (1 + rand() % 6 ) srand() the function ‘srand‘ takes an unsigned integer argument and seeds the ‘rand‘ function to produce…
-
Functions–STRUCTURED PROGRAMMING Course Notes
Functions Experience has shown that the best way to develop & maintain a program is to construct it from small, simple pieces or components. This technique is called “divide & conquer”. Declare and use functions to facilitate the design, implementation, operation, and maintenance of large programs. Functions (aka methods, procedures, sub-routines) allow us to modularize a program by separating its tasks into self-contained units. We can use a combination of provided library functions or create out own functions, known as user-defined, or programmer-defined functions. The statements in function bodies are written only once but can be reused from perhaps several locations in a program and are hidden from other functions.…