본문 바로가기
프로그래밍/C++

C++ 에서 구조체와 클래스의 차이

by eteo 2024. 2. 14.

 

 

 

아래에서 보듯이 C++에서 구조체와 클래스는 사용방법과 기능이 매우 유사하다.

 

C++의 구조체는 멤버함수를 추가할 수도 있으며, 명시적으로 생성자/소멸자를 추가할 수 있고 명시적으로 정의하지 않으면 수명주기에 따라 호출되는 기본 생성자/소멸자가 컴파일러에 의해 제공된다는 점이 클래스와 동일하다.

 

반면 구조체와 클래스의 주요 차이는 접근제어 지시자의 기본값이 다르다는 것이다. 접근제어 지시자를 따로 명시하지 않고 정의한 경우 구조체는 기본적으로 public 이고, 클래스는 기본적으로 private이다. 

 

 

#include <iostream>

using namespace std;

struct Point {
    int x;
    int y;
    Point(int _x, int _y) : x(_x), y(_y) {
        cout << "Point Constructor" << endl;
    }
    ~Point() {
        cout << "Point Destructor" << endl;
    }
    void printCoordinates() {
        cout << "X: " << x << ", Y: " << y << endl;
    }
};

class PointClass {
private:
    int x;
    int y;
public:
    PointClass(int _x, int _y) : x(_x), y(_y) {
        cout << "PointClass Constructor" << endl;
    }
    ~PointClass() {
        cout << "PointClass Destructor" << endl;
    }
    void printCoordinates() {
        cout << "X: " << x << ", Y: " << y << endl;
    }
};

 

 

int main() {
    
    Point p(1, 2);
    p.printCoordinates();
    
    Point *pp = new Point(3, 4);
    pp->printCoordinates();
    delete pp;
    
    PointClass pc(5, 6);
    pc.printCoordinates();
    
    PointClass *ppc = new PointClass(7, 8);
    ppc->printCoordinates();
    delete ppc;

    return 0;
}