OOP: Encapsulation & Constructors
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.