구조체와 클래스

BS_Lee·2024년 5월 2일
0

C++

목록 보기
7/15

07.구조체와클래스.pdf

구조체와 클래스의 차이?

  • 구조체같은 경우에는 전역으로 사용이 가능하다.
  • 클래스는 접근지정자가 있다.
    • public: 전역적으로 접근이 가능
    • private: 클래스 내에서만 접근이 가능
    • protected: 상속된 애만 접근 가능

⇒ 비슷한 역할을 하는데도 구조체가 없어지지 않는 이유는, C언어와 호환성을 위해서 남겨놨다고 한다.

구조체란

  • 여러 변수들의 하나의 변수로 묶는 방법이다.

구조체 선언 예시

// 구조체
struct Point {
	int x;
	int y;
};

구조체 사용 예시

#include <iostream>

using namespace std;
// 구조체
struct shape {
    int height;
    int width;
};

int main(){
	
		shape s;
	  s.height = 12;
	  s.width = 3;
  
	  cout << s.height*s.width << endl;
    
	return 0;
}

구조체 포인터

struct Point {
	int x;
	int y;
};

int main(){
	// 구조체 포인터 선언
	struct Point *ptr;
	
	// 구조체 변수 선언
	struct Point p2 = {10, 20};
	
	// 메모리 동적 할당
	ptr = (struct Point *)malloc(sizeof(struct Point));
	
	// 정적 할당
	struct Point *ptr2 = &p2;
	
	// 멤버에 접근하여 값 할당
	ptr->x = 10;
	ptr->y = 20;
	
	return 0;
}

클래스

  • 여러 개의 변수들과 함수들을 하나의 단위로 묶는 방법

클래스 코드 예제

class CPoint {
	
	// 변수
	int x;
	int y;
	
	// 함수
	void Print(){
		cout << x << endl;
		cout << y << endl;
	};
	
	void display(){
		std::cout << "Value: " << value << std::endl;
	};
}

객체배열

int mian() {
	
	// 객체 배열 생성
	CPoint po[5];
	
	// 객체 배열에 값 할당
	for (int i = 0; i < 5; i++){
		po[i].x = i + 1;
	}
	
	// 객체 배열 출력
	for (int i = 0; i < 5; i++){
		po[i].display();
	}
	
	return 0;
}

객체 포인터

#include <iostream>

class MyClass {
public:
    int value;

    MyClass(int v) {
        value = v;
    }

    void display() {
        std::cout << "Value: " << value << std::endl;
    }
};

int main() {
    // MyClass 객체 생성
    MyClass obj(10);

    // 객체 포인터 선언 및 초기화
    MyClass *ptr = &obj;

    // 객체 포인터를 통한 멤버 접근
    ptr->display(); // 객체의 display() 함수 호출

    return 0;
}
profile
설명이 가능할 때까지 공부하기.

0개의 댓글