Menu
Coddy logo textTech

Attributes (Data Members)

Part of the Object Oriented Programming section of Coddy's C++ journey — lesson 9 of 104.

Data members (attributes) store an object's state. They are typically declared private and accessed through public getter/setter methods. This is called encapsulation.

Private data members

class BankAccount {
private:
    std::string accountName;
    int balance;
};

Public getters and setters

class BankAccount {
private:
    std::string accountName;
    int balance;

public:
    void setBalance(int balance) {
        this->balance = balance;
    }
    
    int getBalance() {
        return this->balance;
    }
};

Setters with validation

void BankAccount::setBalance(int balance) {
    if (balance >= 0) {
        this->balance = balance;
    }
}

Access specifiers

class MyClass {
private:    // Only accessible inside the class
    int secret;

public:     // Accessible from anywhere
    int getSecret() { return secret; }

protected:  // Accessible in class and subclasses
    int shared;
};

Making data members private hides them from outside code. Getters return their values, setters modify them with optional validation. This protects your data and controls how it's accessed.

challenge icon

Challenge

Medium

Create a BankAccount class with private data members and public access methods:

  • Private members: accountName (string), balance (int)
  • Setters: setAccountName, setBalance
  • Getters: getAccountName, getBalance
  • deposit(int amount) — adds to balance if amount > 0
  • withdraw(int amount) — returns "Success" if possible, otherwise "Insufficient funds"

Cheat sheet

Data members (attributes) store an object's state and are typically declared private for encapsulation.

Private data members:

class BankAccount {
private:
    std::string accountName;
    int balance;
};

Public getters and setters:

class BankAccount {
private:
    std::string accountName;
    int balance;

public:
    void setBalance(int balance) {
        this->balance = balance;
    }
    
    int getBalance() {
        return this->balance;
    }
};

Setters with validation:

void BankAccount::setBalance(int balance) {
    if (balance >= 0) {
        this->balance = balance;
    }
}

Access specifiers:

class MyClass {
private:    // Only accessible inside the class
    int secret;

public:     // Accessible from anywhere
    int getSecret() { return secret; }

protected:  // Accessible in class and subclasses
    int shared;
};

Try it yourself

#include <iostream>
#include "BankAccount.h"

int main() {
    std::string name;
    int initial, depositAmt;
    std::getline(std::cin, name);
    std::cin >> initial >> depositAmt;
    
    BankAccount account;
    account.setAccountName(name);
    account.setBalance(initial);
    
    std::cout << "Account: " << account.getAccountName() << std::endl;
    std::cout << "Balance: " << account.getBalance() << std::endl;
    
    account.deposit(depositAmt);
    std::cout << "After deposit: " << account.getBalance() << std::endl;
    
    std::string result = account.withdraw(2000);
    std::cout << "Withdraw 2000: " << result << std::endl;
    std::cout << "Final Balance: " << account.getBalance() << std::endl;
    return 0;
}
quiz iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

All lessons in Object Oriented Programming