Overloaded functions share a name but accept different parameter types or counts.

Overloads

overloads.cpp
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
#include <iostream>
#include <string>

std::string describe(int count) {
    return "count=" + std::to_string(count);
}

std::string describe(std::string label) {
    return "label=" + label;
}

int main() {
    int count = ;
    std::string label = ;

    std::string countMessage = describe(count);
    std::string labelMessage = describe(label);

    std::cout << countMessage << std::endl;
    std::cout << labelMessage << std::endl;
    return 0;
}
overload C++ chooses the overload whose parameter list best matches the arguments in the call.