Skip to content
    geeksforgeeks
    • Interview Prep
      • DSA
      • Interview Corner
      • Aptitude & Reasoning
      • Practice Coding Problems
      • All Courses
    • Tutorials
      • Python
      • Java
      • ML & Data Science
      • Programming Languages
      • Web Development
      • CS Subjects
      • DevOps
      • Software and Tools
      • School Learning
    • Tracks
      • Languages
        • Python
        • C
        • C++
        • Java
        • Advanced Java
        • SQL
        • JavaScript
        • C#
      • Interview Preparation
        • GfG 160
        • GfG 360
        • System Design
        • Core Subjects
        • Interview Questions
        • Interview Puzzles
        • Aptitude and Reasoning
        • Product Management
        • Computer Organisation and Architecture
      • Data Science
        • Python
        • Data Analytics
        • Complete Data Science
        • Gen AI
        • Agentic AI
      • Dev Skills
        • Full-Stack Web Dev
        • DevOps
        • Software Testing
        • CyberSecurity
        • NextJS
        • Git
      • Tools
        • Computer Fundamentals
        • AI Tools
        • MS Excel & Google Sheets
        • MS Word & Google Docs
      • Maths
        • Maths For Computer Science
        • Engineering Mathematics
        • School Maths
    • C++ Tutorial
    • Interview Questions
    • Examples
    • Quizzes
    • Projects
    • Cheatsheet
    • OOP
    • Exception Handling
    • STL
    • DSA C++
    Open In App

    Encapsulation in C++

    Last Updated : 09 Oct, 2025
    Comments
    Improve
    Suggest changes
    622 Likes
    Like
    Report

    Encapsulation is one of the core concepts of Object Oriented Programming (OOP). The idea of encapsulation is to bind the data members and methods into a single unit. .

    • A class can hide the implementation part and discloses only the functionalities required by other classes. By making class data and methods private, representations or implementations can later be changed without impacting the codes that uses this class.
    • It helps in better maintainability, readability and usability. It also helps maintain data integrity by allowing validation and control over the values assigned to variables.
    Encapsulation

    Implementation of Encapsulation in C++

    • Declare variables as private: Keep the class data members private so that they cannot be accessed directly from outside the class. This ensures data hiding.
    • Use getters and setters: Provide public functions (getters and setters) to access and modify private variables safely. These methods can also include validation to ensure only valid data is assigned.
    • Apply proper access specifiers: Use private for data members to hide information and public for member functions that provide controlled access to the data.
    C++
    #include <iostream>
    #include <string>
    using namespace std;
    
    // Class representing a Programmer
    class Programmer
    {
      private:
        string name; // Private variable
    
      public:
        // Getter method to access the private data
        string getName()
        {
            return name;
        }
    
        // Setter method to modify the private data
        void setName(string newName)
        {
            name = newName;
        }
    };
    
    int main()
    {
        Programmer p;
        p.setName("Geek");                        // Set the name
        cout << "Name=> " << p.getName() << endl; // Get the name
        return 0;
    }
    

    Output
    Name=> Geek
    

    Explanation: In the above example, we use the encapsulation and use getter (getName) and setter (setName) method which are used to show and modify the private data. This encapsulation mechanism protects the internal state of the Programmer object and allows for better control and flexibility in how the name attribute is accessed and modified.

    Best Practices for Encapsulation

    • Make class data private to hide implementation details and reduce coupling.
    • Use getter and setter functions instead of public fields to control access.
    • Ensure only valid values are assigned to private variables.
    • Do not provide setters for data that should not be modified externally (e.g., IDs).

    Advantages of Encapsulation:

    • Data Hiding: Encapsulation restricts direct access to private class variables, protecting sensitive data from unauthorized access.
    • Improved Maintainability: You can change the internal implementation of a class without affecting code that uses the class.
    • Enhanced Security: Encapsulation allows validation and control over data in setter methods, preventing invalid or harmful values.
    • Code Reusability: Encapsulated classes can be reused in different programs without exposing internal details.
    • Better Modularity: Encapsulation keeps data and methods together in a class, promoting organized and modular code.

    Disadvantages of Encapsulation:

    • Increased Code Complexity: Writing getter and setter functions for each variable can make the code longer and slightly more complex.
    • Performance Overhead: Accessing private data through functions instead of directly can add a small performance cost.
    • Less Flexibility in Some Cases: Restricting access too much may limit how other classes can extend or use the class efficiently.
    Create Quiz

    H

    Harsh Agarwal
    Improve

    H

    Harsh Agarwal
    Improve
    Article Tags :
    • C++
    • CPP-OOPs

    Explore

      C++ Basics

      Introduction to C++

      3 min read

      Data Types in C++

      6 min read

      Variables in C++

      4 min read

      Operators in C++

      9 min read

      Basic Input / Output in C++

      2 min read

      Control flow statements in Programming

      15+ min read

      Loops in C++

      7 min read

      Functions in C++

      8 min read

      Arrays in C++

      8 min read

      Core Concepts

      Pointers and References in C++

      5 min read

      new and delete Operators in C++ For Dynamic Memory

      5 min read

      Templates in C++

      8 min read

      Structures, Unions and Enumerations in C++

      3 min read

      Exception Handling in C++

      12 min read

      File Handling in C++

      8 min read

      Multithreading in C++

      8 min read

      Namespace in C++

      5 min read

      OOP in C++

      Object Oriented Programming in C++

      8 min read

      Inheritance in C++

      6 min read

      Polymorphism in C++

      5 min read

      Encapsulation in C++

      3 min read

      Abstraction in C++

      4 min read

      Standard Template Library(STL)

      Standard Template Library (STL) in C++

      3 min read

      Containers in C++ STL

      2 min read

      Iterators in C++ STL

      10 min read

      C++ STL Algorithm Library

      3 min read

      Practice & Problems

      C++ Interview Questions and Answers

      1 min read

      C++ Programming Examples

      4 min read
    top_of_element && top_of_screen < bottom_of_element) || (bottom_of_screen > articleRecommendedTop && top_of_screen < articleRecommendedBottom) || (top_of_screen > articleRecommendedBottom)) { if (!isfollowingApiCall) { isfollowingApiCall = true; setTimeout(function(){ if (loginData && loginData.isLoggedIn) { if (loginData.userName !== $('#followAuthor').val()) { is_following(); } else { $('.profileCard-profile-picture').css('background-color', '#E7E7E7'); } } else { $('.follow-btn').removeClass('hideIt'); } }, 3000); } } }); } $(".accordion-header").click(function() { var arrowIcon = $(this).find('.bottom-arrow-icon'); arrowIcon.toggleClass('rotate180'); }); }); window.isReportArticle = false; function report_article(){ if (!loginData || !loginData.isLoggedIn) { const loginModalButton = $('.login-modal-btn') if (loginModalButton.length) { loginModalButton.click(); } return; } if(!window.isReportArticle){ //to add loader $('.report-loader').addClass('spinner'); jQuery('#report_modal_content').load(gfgSiteUrl+'wp-content/themes/iconic-one/report-modal.php', { PRACTICE_API_URL: practiceAPIURL, PRACTICE_URL:practiceURL },function(responseTxt, statusTxt, xhr){ if(statusTxt == "error"){ alert("Error: " + xhr.status + ": " + xhr.statusText); } }); }else{ window.scrollTo({ top: 0, behavior: 'smooth' }); $("#report_modal_content").show(); } } function closeShareModal() { const shareOption = document.querySelector('[data-gfg-action="share-article"]'); shareOption.classList.remove("hover_share_menu"); let shareModal = document.querySelector(".hover__share-modal-container"); shareModal && shareModal.remove(); } function openShareModal() { closeShareModal(); // Remove existing modal if any let shareModal = document.querySelector(".three_dot_dropdown_share"); shareModal.appendChild(Object.assign(document.createElement("div"), { className: "hover__share-modal-container" })); document.querySelector(".hover__share-modal-container").append( Object.assign(document.createElement('div'), { className: "share__modal" }), ); document.querySelector(".share__modal").append(Object.assign(document.createElement('h1'), { className: "share__modal-heading" }, { textContent: "Share to" })); const socialOptions = ["LinkedIn", "WhatsApp","Twitter", "Copy Link"]; socialOptions.forEach((socialOption) => { const socialContainer = Object.assign(document.createElement('div'), { className: "social__container" }); const icon = Object.assign(document.createElement("div"), { className: `share__icon share__${socialOption.split(" ").join("")}-icon` }); const socialText = Object.assign(document.createElement("span"), { className: "share__option-text" }, { textContent: `${socialOption}` }); const shareLink = (socialOption === "Copy Link") ? Object.assign(document.createElement('div'), { role: "button", className: "link-container CopyLink" }) : Object.assign(document.createElement('a'), { className: "link-container" }); if (socialOption === "LinkedIn") { shareLink.setAttribute('href', `https://www.linkedin.com/sharing/share-offsite/?url=${window.location.href}`); shareLink.setAttribute('target', '_blank'); } if (socialOption === "WhatsApp") { shareLink.setAttribute('href', `https://api.whatsapp.com/send?text=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } if (socialOption === "Twitter") { shareLink.setAttribute('href', `https://twitter.com/intent/tweet?url=${window.location.href}`); shareLink.setAttribute('target', "_blank"); } shareLink.append(icon, socialText); socialContainer.append(shareLink); document.querySelector(".share__modal").appendChild(socialContainer); //adding copy url functionality if(socialOption === "Copy Link") { shareLink.addEventListener("click", function() { var tempInput = document.createElement("input"); tempInput.value = window.location.href; document.body.appendChild(tempInput); tempInput.select(); tempInput.setSelectionRange(0, 99999); // For mobile devices document.execCommand('copy'); document.body.removeChild(tempInput); this.querySelector(".share__option-text").textContent = "Copied" }) } }); // document.querySelector(".hover__share-modal-container").addEventListener("mouseover", () => document.querySelector('[data-gfg-action="share-article"]').classList.add("hover_share_menu")); } function toggleLikeElementVisibility(selector, show) { document.querySelector(`.${selector}`).style.display = show ? "block" : "none"; } function closeKebabMenu(){ document.getElementById("myDropdown").classList.toggle("show"); }
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Campus Training Program
  • Explore
  • POTD
  • Job-A-Thon
  • Blogs
  • Nation Skill Up
  • Tutorials
  • Programming Languages
  • DSA
  • Web Technology
  • AI, ML & Data Science
  • DevOps
  • CS Core Subjects
  • Interview Preparation
  • Software and Tools
  • Courses
  • ML and Data Science
  • DSA and Placements
  • Web Development
  • Programming Languages
  • DevOps & Cloud
  • GATE
  • Trending Technologies
  • Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
  • Preparation Corner
  • Interview Corner
  • Aptitude
  • Puzzles
  • GfG 160
  • System Design
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences