A constructor initializes a new object when it is created.

constructor A constructor has the same name as the class and runs automatically for each new object.

Constructors

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

class Player {
public:
    std::string name;
    int score;

    Player(std::string playerName, int startingScore) {
        name = playerName;
        score = startingScore;
    }
};

int main() {
    std::string name = "Ada";
    int startingScore = 10;

    Player player(name, startingScore);

    std::cout << "player=" << player.name << std::endl;
    std::cout << "score=" << player.score << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Player {
public:
    std::string name;
    int score;

    Player(std::string playerName, int startingScore) {
        name = playerName;
        score = startingScore;
    }
};

int main() {
    std::string name = "Bjarne";
    int startingScore = 10;

    Player player(name, startingScore);

    std::cout << "player=" << player.name << std::endl;
    std::cout << "score=" << player.score << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Player {
public:
    std::string name;
    int score;

    Player(std::string playerName, int startingScore) {
        name = playerName;
        score = startingScore;
    }
};

int main() {
    std::string name = "Grace";
    int startingScore = 10;

    Player player(name, startingScore);

    std::cout << "player=" << player.name << std::endl;
    std::cout << "score=" << player.score << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Player {
public:
    std::string name;
    int score;

    Player(std::string playerName, int startingScore) {
        name = playerName;
        score = startingScore;
    }
};

int main() {
    std::string name = "Ada";
    int startingScore = 0;

    Player player(name, startingScore);

    std::cout << "player=" << player.name << std::endl;
    std::cout << "score=" << player.score << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Player {
public:
    std::string name;
    int score;

    Player(std::string playerName, int startingScore) {
        name = playerName;
        score = startingScore;
    }
};

int main() {
    std::string name = "Ada";
    int startingScore = 25;

    Player player(name, startingScore);

    std::cout << "player=" << player.name << std::endl;
    std::cout << "score=" << player.score << std::endl;
    return 0;
}
  1. name ← Ada, startingScore ← 10

    15int main() {16    std::string name→ Ada = "Ada"; //@name="Bjarne", "Grace"17    int startingScore→ 10 = 10; //@startingScore=0, 251819    Player player(nameAda, startingScore);
  2. score ← 10

    9Player(std::string playerNameAda, int startingScore10) {10    name = playerNameAda;11    score→ 10 = startingScore10;12}
  3. player ← (empty)

    19    Player player→ (empty)(nameAda, startingScore);2021    std::cout << "player=" << player(empty).name << std::endl;22    std::cout << "score=" << player(empty).score << std::endl;23    return 0;24}
    outputplayer=Ada
    score=10
  1. name ← Bjarne, startingScore ← 10

    15int main() {16    std::string name→ Bjarne = "Bjarne";17    int startingScore→ 10 = 10;1819    Player player(nameBjarne, startingScore);
  2. score ← 10

    9Player(std::string playerNameBjarne, int startingScore10) {10    name = playerNameBjarne;11    score→ 10 = startingScore10;12}
  3. player ← (empty)

    19    Player player→ (empty)(nameBjarne, startingScore);2021    std::cout << "player=" << player(empty).name << std::endl;22    std::cout << "score=" << player(empty).score << std::endl;23    return 0;24}
    outputplayer=Bjarne
    score=10
  1. name ← Grace, startingScore ← 10

    15int main() {16    std::string name→ Grace = "Grace";17    int startingScore→ 10 = 10;1819    Player player(nameGrace, startingScore);
  2. score ← 10

    9Player(std::string playerNameGrace, int startingScore10) {10    name = playerNameGrace;11    score→ 10 = startingScore10;12}
  3. player ← (empty)

    19    Player player→ (empty)(nameGrace, startingScore);2021    std::cout << "player=" << player(empty).name << std::endl;22    std::cout << "score=" << player(empty).score << std::endl;23    return 0;24}
    outputplayer=Grace
    score=10
  1. name ← Ada, startingScore ← 0

    15int main() {16    std::string name→ Ada = "Ada";17    int startingScore→ 0 = 0;1819    Player player(nameAda, startingScore);
  2. Player(std::string playerName, int startingScore)

    9Player(std::string playerNameAda, int startingScore0) {10    name = playerNameAda;11    score0 = startingScore0;12}
  3. player ← (empty)

    19    Player player→ (empty)(nameAda, startingScore);2021    std::cout << "player=" << player(empty).name << std::endl;22    std::cout << "score=" << player(empty).score << std::endl;23    return 0;24}
    outputplayer=Ada
    score=0
  1. name ← Ada, startingScore ← 25

    15int main() {16    std::string name→ Ada = "Ada";17    int startingScore→ 25 = 25;1819    Player player(nameAda, startingScore);
  2. score ← 25

    9Player(std::string playerNameAda, int startingScore25) {10    name = playerNameAda;11    score→ 25 = startingScore25;12}
  3. player ← (empty)

    19    Player player→ (empty)(nameAda, startingScore);2021    std::cout << "player=" << player(empty).name << std::endl;22    std::cout << "score=" << player(empty).score << std::endl;23    return 0;24}
    outputplayer=Ada
    score=25