Cambo Freelance
ទំព័រដើមសេវាកម្មអត្ថបទការបង្រៀនក្រុមវគ្គបណ្តុះបណ្តាលទំនាក់ទំនង
Cambo Freelance

Professional freelance team from Cambodia delivering technology-driven solutions with cultural insight and modern expertise.

ផ្ញើសាររបស់អ្នក

ត្រៀមចាប់ផ្តើមគម្រោងរបស់អ្នក? ទំនាក់ទំនងក្រុមរបស់យើង។

ទំនាក់ទំនង

សេវាកម្ម

  • Web & Mobile Development Services
  • Graphic Design & Branding Services

តំណភ្ជាប់មានប្រយោជន៍

  • ទំព័រដើម
  • សេវាកម្ម
  • ការសិក្សា
  • អំពីយើង
  • ទំនាក់ទំនង
  • តម្លៃ

© 2026 Cambo Freelance. រក្សាសិទ្ធិទាំងអស់។

TelegramFacebookLinkedInEmail
HomeTutorialsC++C++ Encapsulation
⚡C++ Tutorials

50 lessons

Beginner(21)1C++ Introduction2C++ Getting Started3C++ Syntax4C++ Output5C++ Comments6C++ Variables7C++ Data Types8C++ Constants9C++ User Input10C++ Operators11C++ Strings12C++ Math13C++ Booleans14C++ Conditions15C++ Switch16C++ Loops17C++ Break and Continue18C++ Arrays19C++ Functions20C++ References21C++ Pointers
Intermediate(19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers
Advanced(10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44
⚡

C++ Tutorials

Lesson 26 of 50

All lessons
Beginner (21)1C++ Introduction2C++ Getting Started
26
C++ Encapsulation
27C++ Inheritance
28C++ Polymorphism
29C++ Abstraction
30C++ Files
31C++ Exception Handling
32C++ Namespaces
33C++ Structures
34C++ Enumerations
35C++ STL Introduction
36C++ Vectors
37C++ Maps
38C++ Sets
39C++ Queues
40C++ Stacks
C++ Move Semantics
45C++ Multithreading
46C++ Design Patterns
47C++ Memory Management
48C++17 Features
49C++20 Features
50C++ Performance Optimization
3
C++ Syntax
4C++ Output
5C++ Comments
6C++ Variables
7C++ Data Types
8C++ Constants
9C++ User Input
10C++ Operators
11C++ Strings
12C++ Math
13C++ Booleans
14C++ Conditions
15C++ Switch
16C++ Loops
17C++ Break and Continue
18C++ Arrays
19C++ Functions
20C++ References
21C++ Pointers
Intermediate (19)22C++ Classes23C++ Objects24C++ Constructors25C++ Access Specifiers26C++ Encapsulation27C++ Inheritance28C++ Polymorphism29C++ Abstraction30C++ Files31C++ Exception Handling32C++ Namespaces33C++ Structures34C++ Enumerations35C++ STL Introduction36C++ Vectors37C++ Maps38C++ Sets39C++ Queues40C++ Stacks
Advanced (10)41C++ Smart Pointers42C++ Templates43C++ Lambda Functions44C++ Move Semantics45C++ Multithreading46C++ Design Patterns47C++ Memory Management48C++17 Features49C++20 Features50C++ Performance Optimization
⚡C++IntermediateLesson 26 of 50CamboFreelanceJune 19, 2026

C++ Encapsulation

Master C++ encapsulation: hide private data, expose public getters and setters, and enforce business rules within classes.


Tutorials › C++ › Encapsulation
Intermediate7 min readLesson 26 of 50

What is Encapsulation?

Encapsulation is the OOP principle of hiding internal data and only exposing it through controlled public methods (getters and setters). It protects data integrity and reduces coupling.

#include <iostream>
#include <string>
using namespace std;

class User {
  private:
    string username;
    string password;
    int    loginAttempts;

  public:
    User(string u, string p) : username(u), password(p), loginAttempts(0) { }

    bool login(string pass) {
        if (loginAttempts >= 3) {
            cout << "Account locked!" << endl;
            return false;
        }
        if (pass == password) {
            loginAttempts = 0;
            cout << "Welcome, " << username << "!" << endl;
            return true;
        }
        loginAttempts++;
        cout << "Wrong password. Attempt " << loginAttempts << "/3" << endl;
        return false;
    }

    string getUsername() { return username; }
};

int main() {
    User u("alice", "secret123");
    u.login("wrong");
    u.login("secret123");
    return 0;
}

Output:

Wrong password. Attempt 1/3
Welcome, alice!
Why Encapsulation? If loginAttempts were public, anyone could reset it to bypass the lockout. Private data forces all access through the login() method which enforces the business rule.

Exercise

Create a Counter class with a private count (int, starts at 0). Add: increment(), decrement() (min 0), reset(), and getCount().

Show Solution
#include <iostream>
using namespace std;

class Counter {
  private:
    int count;
  public:
    Counter() : count(0) { }
    void increment()     { count++; }
    void decrement()     { if (count > 0) count--; }
    void reset()         { count = 0; }
    int  getCount()      { return count; }
};

int main() {
    Counter c;
    c.increment(); c.increment(); c.increment();
    cout << c.getCount() << endl;   // 3
    c.decrement();
    cout << c.getCount() << endl;   // 2
    c.reset();
    cout << c.getCount() << endl;   // 0
    return 0;
}

Quiz

  1. What is the purpose of encapsulation?

    • A) To make all data public
    • B) To hide internal data and control access through methods
    • C) To inherit from multiple classes
    • D) To speed up execution
    Answer

    B) Encapsulation hides internal state and exposes only a controlled interface.

Summary

  • Encapsulation = private data + public getters/setters.
  • Prevents invalid state by validating input in setters.
  • Reduces coupling — callers don't depend on internal implementation.
← Previous: Access Specifiers Next: Inheritance →
c++encapsulationoopintermediate
PreviousLesson 25: C++ Access SpecifiersNextLesson 27: C++ Inheritance
Back to All Tutorials