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

    Difference Between Structure and Class in C++

    Last Updated : 01 Oct, 2025
    Comments
    Improve
    Suggest changes
    323 Likes
    Like
    Report

    In C++, a structure works the same way as a class, except for the difference that members of a class are private by default and members of a structure are public by default. 

    For example, program 1 fails in compilation but program 2 works fine, 

    Program 1

    C++
    // C++ Program to demonstrate that
    // Members of a class are private
    // by default
    #include <iostream>
    
    using namespace std;
    
    class Test {
        // x is private
        int x;
    };
    
    int main() {
        Test t;
      
        // compiler error because x
        // is private
        t.x = 20;
    
        return t.x;
    }
    


     Output:

    ./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp: In function 'int main()':
    ./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:10:9: error: 'int Test::x' is private
         int x;
             ^
    ./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:18:7: error: within this context
         t.x = 20;
           ^
    ./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:10:9: error: 'int Test::x' is private
         int x;
             ^
    ./cf03c8d1-d4a3-43ea-a058-fe5b5303167b.cpp:20:14: error: within this context
         return t.x;
                  ^

    Program 2:

    C++
    // C++ Program to demonstrate that
    // members of a structure are public
    // by default
    #include <iostream>
    
    using namespace std;
    
    struct Test {
        // x is public
        int x;
    };
    
    int main()
    {
        Test t;
        t.x = 20;
    
        // works fine because x is public
        cout << t.x;
    }
    

    Output
    20

    There is no other difference as structures support all features of a class like member methods, inheritance and virtual functions. The following is a summary of differences

    S. No.

    Class

    Structure

    1

    Members of a class are private by default.

    Members of a structure are public by default.

    2

    It is declared using the class keyword.

    It is declared using the struct keyword.

    3

    It is normally used for Object Oriented Programming.

    It also allows almost all features of a class, but is normally used for the grouping of different datatypes.

    To know about the Difference between C structures and C++ structures refer to this article.

    Create Quiz

    Struct vs Class in C++
    Visit Course explore course icon

    K

    kartik
    Improve

    K

    kartik
    Improve
    Article Tags :
    • Difference Between
    • C++
    • cpp-class
    • cpp-struct

    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++

      3 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