OOP: Encapsulation & Constructors

⚡ C++ Lesson 12 Intermediate

Encapsulation hides the internal details of a class, exposing operations safely using getters, setters, and constructors.

1 Getter/Setter Validation and Constructor Initialization Lists

Getter and setter methods control access to private variables, allowing validation checks. When writing constructors, C++ provides **Constructor Initialization Lists**, which initialize member variables directly before the constructor body executes, improving performance.

2 Encapsulation Code

Let's run a program utilizing initialization list layouts and setters validation checks:

C++ — Encapsulation & Constructor Lists ▶ Run Code
#include <iostream>
#include <string>

class BankAccount {
private:
    std::string owner;
    double balance;

public:
    // Constructor using initialization lists (: owner(owner)...)
    BankAccount(std::string owner, double initialBalance) 
        : owner(owner), balance(initialBalance >= 0 ? initialBalance : 0) {}

    double getBalance() const { return balance; }

    void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        } else {
            std::cout << "Invalid deposit!\n";
        }
    }
};

int main() {
    BankAccount account("Bob", 500.0);
    account.deposit(200.0);
    std::cout << "Balance: $" << account.getBalance() << "\n";
    return 0;
}
3 Code Challenge
Challenge: Write a class named `Employee` with fields `name` and `salary`. Use a constructor initialization list to initialize these fields. Expose a setter for `salary` that rejects negative salary updates.