📖
C++
  • 1. C++ Basics
    • 1.1 Input, Output, and Program Structure
      • 1.1.1 Welcome to Data Structures in C++
      • 1.1.2 Hello World
      • 1.1.3 Input and Output
      • 1.1.4 getline and cin
      • 1.1.5 Program Structure
    • 1.2 Basic Data Types
      • 1.2.1 Basic Data Types
        • 1.2.1.1 Differences between C++ and Java Data Types and Variables
      • 1.2.2 Strings and Characters
      • 1.2.3 Numbers
      • 1.2.4 Booleans
    • 1.3 Conditional Statements
      • 1.3.1 Conditional Statements
      • 1.3.2 Basic If/Else Statements
      • 1.3.3 Comparing Strings
      • 1.3.4 Logical Operators
    • 1.4 Loops
      • 1.4.1 Loops
      • 1.4.2 For Loops
      • 1.4.3 While Loops
      • 1.4.4 Searching a String
    • 1.5 Functions in C++
      • 1.5.1 Functions in C++
      • 1.5.2 Defining and Calling Functions
      • 1.5.3 Passing by Reference vs Value
      • 1.5.4 Function Prototypes
  • 2. Going Beyond the Basics
    • 2.1 Vector Basics
      • 2.1.1 Vector Basics
      • 2.1.2 Creating and Accessing Vectors
      • 2.1.3 Inserting into a Vector
      • 2.1.4 Looping Through a Vector
    • 2.2 Function Default Values
      • 2.2.1 Function Default Values
      • 2.2.2 Default Values
      • 2.2.3 Default Values with a Prototype
      • 2.2.4 Example: Splitting a String
    • 2.3 Structs
      • 2.3.1 Structs
      • 2.3.2 Defining and Accessing Structs
      • 2.3.3 Using Structs: Line Length
    • 2.4 File Input/Output
      • 2.4.1 File Input/Output
      • 2.4.2 Reading in a File
      • 2.4.3 Processing a File
      • 2.4.4 Writing to a File
      • 2.4.5 Creating an Input Stream from a String
    • 2.5 Error Handling
      • 2.5.1 Error Handling
      • 2.5.2 Validating a Number
      • 2.5.3 Validating a Vector Index
      • 2.5.4 Throwing Other Values
  • 3. Libraries
    • 3.1 Header Files
      • 3.1.1 Header Files
      • 3.1.2 Header File
      • 3.1.3 Header and Implementation File
      • 3.1.4 Safer Header
    • 3.2 Using Libraries
      • 3.2.1 Using a Utilities Library
      • 3.2.2 The Util Library
  • 4. 2D Vectors, Stacks, and Queues
    • 4.1 2D Vectors
      • 4.1.1 2D Vectors
      • 4.1.2 The 2D Vector
      • 4.1.3 Creating a 2D Vector
    • 4.3 Stacks
      • 4.3.1 Stacks
      • 4.3.2 Basic Stack
      • 4.3.3 Stack Example: Reverse a String
    • 4.5 Queues
      • 4.5.1 Queues
      • 4.5.2 Basic Queues
      • 4.5.3 Queue Example: Next in Line
  • 5. Sets and Maps
    • 5.1 Pairs and Iterators
      • 5.1.1 Pairs and Iterators
      • 5.1.2 Pairs
      • 5.1.3 Iterators
    • 5.3 Sets
      • 5.3.1 Sets
      • 5.3.2 Basic Sets
      • 5.3.3 Iterating Through a Set
      • 5.3.4 Sets of Struct Values
    • 5.4 Maps
      • 5.4.1 Maps
      • 5.4.2 Map Basics
      • 5.4.3 Iterating Through a Map
      • 5.4.4 Updating Maps
  • 6. Recursion
    • 6.1 Functional Recursion
      • 6.1.1 Functional Recursion
      • 6.1.2 Basic Recursive Problem: Exponential
      • 6.1.3 Recursion Example: Reverse String
      • 6.1.4 Recursion Example: Make Sum
    • 6.2 Procedural Recursion
      • 6.2.1 Procedural Recursion
      • 6.2.2 Print Binary
      • 6.2.3 Print Permutations
      • 6.2.4 Depth vs Breadth Search
  • 7. Pointers, Linked Lists, and Graphs
    • 7.1 Pointers
      • 7.1.1 Pointers
      • 7.1.2 Assigning and Updating Pointers
      • 7.1.3 Pointers and Functions
      • 7.1.4 Pointers and Data Structures
    • 7.2 Linked Lists
      • 7.2.1 Linked Lists
      • 7.2.2 Basic Linked List
      • 7.2.3 Linked List and Recursion
      • 7.2.4 Example: Sorted Phone Book
      • 7.2.5 Doubly Linked List
    • 7.3 Graphs
      • 7.3.1 Graphs
      • 7.3.2 Basic Example: Breadth First Search
      • 7.3.3 Application: Connecting Cities
Powered by GitBook
On this page
  • Defining Functions
  • Calling a Function
  • Function Overload
  • Try This Example
  1. 1. C++ Basics
  2. 1.5 Functions in C++

1.5.2 Defining and Calling Functions

In this example, you will explore the basics of defining and calling a function. Remember, one of the reasons we use functions is to produce reusable code. Once a function is defined, it can be called multiple times.

Defining Functions

The basic function definition syntax in C++ is similar to other languages:

returnType functionName(parameter list){
    function statements
}

The one noticeable difference from Java is that there is no public/private access level at the beginning. By default, functions are public. In this course, we will always use public functions.

Let’s take a look at each of these components:

returnType: Each function needs either a variable type or void return type.

functionName: The second value should be the function name. By convention, these typically start with a lowercase value.

parameter list: The parameters should specify both the variable type and the variable name. Each parameter is separated by a comma. Parameters are optional.

function statements: The body of the function is put between the curly braces.

Examples:

int addFive (int number){
    number += 5;
    return number;
}
void printSum (int num1, int num2){
    cout << num1 + num2 << endl;
}

Calling a Function

You can call a function by using its name and passing any applicable parameters. If the function has a return value, you can process that return value as needed.

Function Definition:

int addFive (int number){
    number += 5;
    return number;
}

Calling the Function:

int main(){
    int a = addFive(8);
    return 0;
}

Function Overload

As you see in other languages, C++ allows for function overloads. Two functions can share the same name as long as they have different parameters (as defined by the parameter type and order).

Using function overload helps to keep function names the same even if different parameters are needed. For example, if you think back to the substring function, there was a version that took a starting point and a version that took a starting point and length. Using function overload, you can name these functions the same and the compiler will figure out which function to use based on the parameter list.

Good Examples

Bad Examples

int addNum(int a, int b) {…} int addNum(int a, int b, int c) {...}

int addNum(int a, int b) {…} int addNum(int x, int y) {...}

string remove(string s, int start) {...} string remove(string s, int start, int end) {...}

string insert(string s, int start, int end) {...} string insert(string s, int end, int start) {...}

In the table above, the first set of bad examples just change the variable name. Just changing the name does not create a different function signature since the variable types are the same.

The second bad example has a similar issue. In this example, the variable order is switched, but since the variables have the same types, they do not override.

Try This Example

Previous1.5.1 Functions in C++Next1.5.3 Passing by Reference vs Value

Last updated 1 year ago

GDB online Debugger | Code, Compile, Run, Debug online C, C++GDB online Debugger
Defining and Calling Functions
Logo