Member functions operate on the data inside an object.

member function A member function is called with an object, so it can read or update that object's fields.

Member Functions

example
member_functions.cpp
Replay: real traced execution (multi-file project)
#include <iostream>

class ScoreCard {
public:
    int points;

    ScoreCard(int start) {
        points = start;
    }

    void addPoints(int amount) {
        points += amount;
    }

    bool passed() {
        return points >= 70;
    }
};

int main() {
    int start = 62;
    int bonus = 12;

    ScoreCard quiz(start);
    quiz.addPoints(bonus);

    std::cout << "points=" << quiz.points << std::endl;
    std::cout << "passed=" << quiz.passed() << std::endl;
    return 0;
}
#include <iostream>

class ScoreCard {
public:
    int points;

    ScoreCard(int start) {
        points = start;
    }

    void addPoints(int amount) {
        points += amount;
    }

    bool passed() {
        return points >= 70;
    }
};

int main() {
    int start = 50;
    int bonus = 12;

    ScoreCard quiz(start);
    quiz.addPoints(bonus);

    std::cout << "points=" << quiz.points << std::endl;
    std::cout << "passed=" << quiz.passed() << std::endl;
    return 0;
}
#include <iostream>

class ScoreCard {
public:
    int points;

    ScoreCard(int start) {
        points = start;
    }

    void addPoints(int amount) {
        points += amount;
    }

    bool passed() {
        return points >= 70;
    }
};

int main() {
    int start = 75;
    int bonus = 12;

    ScoreCard quiz(start);
    quiz.addPoints(bonus);

    std::cout << "points=" << quiz.points << std::endl;
    std::cout << "passed=" << quiz.passed() << std::endl;
    return 0;
}
#include <iostream>

class ScoreCard {
public:
    int points;

    ScoreCard(int start) {
        points = start;
    }

    void addPoints(int amount) {
        points += amount;
    }

    bool passed() {
        return points >= 70;
    }
};

int main() {
    int start = 62;
    int bonus = 5;

    ScoreCard quiz(start);
    quiz.addPoints(bonus);

    std::cout << "points=" << quiz.points << std::endl;
    std::cout << "passed=" << quiz.passed() << std::endl;
    return 0;
}
#include <iostream>

class ScoreCard {
public:
    int points;

    ScoreCard(int start) {
        points = start;
    }

    void addPoints(int amount) {
        points += amount;
    }

    bool passed() {
        return points >= 70;
    }
};

int main() {
    int start = 62;
    int bonus = 20;

    ScoreCard quiz(start);
    quiz.addPoints(bonus);

    std::cout << "points=" << quiz.points << std::endl;
    std::cout << "passed=" << quiz.passed() << std::endl;
    return 0;
}
  1. start ← 62, bonus ← 12

    20int main() {21    int start→ 62 = 62; //@start=50, 7522    int bonus→ 12 = 12; //@bonus=5, 202324    ScoreCard quiz(start62);25    quiz.addPoints(bonus);
  2. points ← 62

    7ScoreCard(int start62) {8    points→ 62 = start62;9}
  3. quiz ← (empty)

    24ScoreCard quiz→ (empty)(start62);25quiz(empty).addPoints(bonus12);
  4. points ← 74

    11void addPoints(int amount12) {12    points→ 74 += amount12;13}
  5. quiz.addPoints(bonus);

    24ScoreCard quiz(start);25quiz(empty).addPoints(bonus12);2627std::cout << "points=" << quiz(empty).points << std::endl;28std::cout << "passed=" << quiz(empty).passed() << std::endl;29return 0;
    outputpoints=74
  6. bool passed()

    15bool passed() {16    return points74 >= 70;17}
  7. std::cout << "passed=" << quiz.passed() << std::endl;

    27    std::cout << "points=" << quiz.points << std::endl;28    std::cout << "passed=" << quiz(empty).passed() << std::endl;29    return 0;30}
    outputpassed=1
  1. start ← 50, bonus ← 12

    20int main() {21    int start→ 50 = 50;22    int bonus→ 12 = 12;2324    ScoreCard quiz(start50);25    quiz.addPoints(bonus);
  2. points ← 50

    7ScoreCard(int start50) {8    points→ 50 = start50;9}
  3. quiz ← (empty)

    24ScoreCard quiz→ (empty)(start50);25quiz(empty).addPoints(bonus12);
  4. points ← 62

    11void addPoints(int amount12) {12    points→ 62 += amount12;13}
  5. quiz.addPoints(bonus);

    24ScoreCard quiz(start);25quiz(empty).addPoints(bonus12);2627std::cout << "points=" << quiz(empty).points << std::endl;28std::cout << "passed=" << quiz(empty).passed() << std::endl;29return 0;
    outputpoints=62
  6. bool passed()

    15bool passed() {16    return points62 >= 70;17}
  7. std::cout << "passed=" << quiz.passed() << std::endl;

    27    std::cout << "points=" << quiz.points << std::endl;28    std::cout << "passed=" << quiz(empty).passed() << std::endl;29    return 0;30}
    outputpassed=0
  1. start ← 75, bonus ← 12

    20int main() {21    int start→ 75 = 75;22    int bonus→ 12 = 12;2324    ScoreCard quiz(start75);25    quiz.addPoints(bonus);
  2. points ← 75

    7ScoreCard(int start75) {8    points→ 75 = start75;9}
  3. quiz ← (empty)

    24ScoreCard quiz→ (empty)(start75);25quiz(empty).addPoints(bonus12);
  4. points ← 87

    11void addPoints(int amount12) {12    points→ 87 += amount12;13}
  5. quiz.addPoints(bonus);

    24ScoreCard quiz(start);25quiz(empty).addPoints(bonus12);2627std::cout << "points=" << quiz(empty).points << std::endl;28std::cout << "passed=" << quiz(empty).passed() << std::endl;29return 0;
    outputpoints=87
  6. bool passed()

    15bool passed() {16    return points87 >= 70;17}
  7. std::cout << "passed=" << quiz.passed() << std::endl;

    27    std::cout << "points=" << quiz.points << std::endl;28    std::cout << "passed=" << quiz(empty).passed() << std::endl;29    return 0;30}
    outputpassed=1
  1. start ← 62, bonus ← 5

    20int main() {21    int start→ 62 = 62;22    int bonus→ 5 = 5;2324    ScoreCard quiz(start62);25    quiz.addPoints(bonus);
  2. points ← 62

    7ScoreCard(int start62) {8    points→ 62 = start62;9}
  3. quiz ← (empty)

    24ScoreCard quiz→ (empty)(start62);25quiz(empty).addPoints(bonus5);
  4. points ← 67

    11void addPoints(int amount5) {12    points→ 67 += amount5;13}
  5. quiz.addPoints(bonus);

    24ScoreCard quiz(start);25quiz(empty).addPoints(bonus5);2627std::cout << "points=" << quiz(empty).points << std::endl;28std::cout << "passed=" << quiz(empty).passed() << std::endl;29return 0;
    outputpoints=67
  6. bool passed()

    15bool passed() {16    return points67 >= 70;17}
  7. std::cout << "passed=" << quiz.passed() << std::endl;

    27    std::cout << "points=" << quiz.points << std::endl;28    std::cout << "passed=" << quiz(empty).passed() << std::endl;29    return 0;30}
    outputpassed=0
  1. start ← 62, bonus ← 20

    20int main() {21    int start→ 62 = 62;22    int bonus→ 20 = 20;2324    ScoreCard quiz(start62);25    quiz.addPoints(bonus);
  2. points ← 62

    7ScoreCard(int start62) {8    points→ 62 = start62;9}
  3. quiz ← (empty)

    24ScoreCard quiz→ (empty)(start62);25quiz(empty).addPoints(bonus20);
  4. points ← 82

    11void addPoints(int amount20) {12    points→ 82 += amount20;13}
  5. quiz.addPoints(bonus);

    24ScoreCard quiz(start);25quiz(empty).addPoints(bonus20);2627std::cout << "points=" << quiz(empty).points << std::endl;28std::cout << "passed=" << quiz(empty).passed() << std::endl;29return 0;
    outputpoints=82
  6. bool passed()

    15bool passed() {16    return points82 >= 70;17}
  7. std::cout << "passed=" << quiz.passed() << std::endl;

    27    std::cout << "points=" << quiz.points << std::endl;28    std::cout << "passed=" << quiz(empty).passed() << std::endl;29    return 0;30}
    outputpassed=1