본문 바로가기
카테고리 없음

[C++] 클래스 Class

by 까망 하르방 2025. 1. 31.
반응형

클래스 Class

객체(object)를 만드는 틀

"클래스 내부 변수/함수" = "멤버 데이터/함수" 라고 한다.

 

 

접근 권한

• public 외부에서도 접근 허용

• private 멤버 함수만 접근 가능 (default 접근 권한)

• protected 멤버 함수나 파생 클래스에서만 접근 가능

 

 

struct 기본적으로 public 접근 권한이면

Class 변수와 함수가 기본적으로 private 접근권한!

 

📌 [C/C++] struct 차이 비교

 

[C/C++] struct 차이 비교

C++에서는 Class가 있지만 stuct 형태도 사용 가능하다. C에서 사용하던 형태와 C++ 차이가 존재한다.  [C] StructC언어 구조체 안에는 변수만 둘 수 있다.그래서 구조체 함수를 외부에 두어야 한다. [C

zoosso.tistory.com


[예제] 클래스 접근 권한

#include <iostream>

using namespace std;

class A 
{
private: // default
    int no;
    char ch;
    void test(void);

public:
    void sub(int n, char c);
    void func(void);
};

void A::sub(int n, char c)
{
    cout << "A::sub" << endl;
    no = n;
    ch = c;
}

void A::func(void)
{
    cout << "A::func" << endl;
    test(); // 클래스 안에서 사용해야 함
}

void A::test(void)
{
    cout << "A::test" << endl;
}

int main(void)
{
    A harbang;

    harbang.sub(4, 'A'); // ok
    harbang.func();      // ok
    harbang.test();      // error (private라서 접근 X)
    
    
    // 클래스 A의 포인터
    A* ap = &harbang;
    ap->sub(10, 'B'); // ok
}

 

 

Q) 클래스 객체 크기는 어떻게 될까?

#include <iostream>

struct Harbang
{
	int url;     // 4 B
	int account; // 4 B
	int money;   // 4 B

	int getUrl() { return url; }
	int getAccount() { return account; }
	int getMoney() { return money; }
};

int main()
{
	Harbang h1 = { 1, 2, 3 };
	Harbang h2 = { 4, 5, 6 };

	printf("%d\n", sizeof(h1)); // 12 B
	printf("%d\n", sizeof(h2)); // 12 B
}

 

Harbang 객체를 지역 변수로 생성하면

스택에는 멤버 데이터만 객체당 1개씩 생성된다.

멤버 함수는 객체 개수 상관없이 코드 메모리에 한개만 만들어진다.

클래스 Class

반응형

댓글