Перевантажені функції дозволяють надавати іншу семантику для функції залежно від типів та кількості його аргументів. Наприклад, розглянемо функцію print , яка приймає std::string аргумент. Ця функція може виконувати дуже різні завдання, відмінні від функціїяка приймає аргумент типу double.

Перевантаження операторів дозволяє визначити дії, які виконуватиме оператор. Перевантаження передбачає створення функції, назва якої містить слово operator і символ оператора, що перевантажується. Функція оператора може бути визначена як член класу або поза класом.

Перевантаження означає, що можна визначати кілька різних функцій з однаковими іменами. У цьому випадку кажуть, що ім'я функції "перевантажено". Єдине обмеження полягає в тому, що перевантажені функції повинні відрізнятись набором типів параметрів.