반응형
클래스 Class
객체(object)를 만드는 틀
"클래스 내부 변수/함수" = "멤버 데이터/함수" 라고 한다.
접근 권한
• public 외부에서도 접근 허용
• private 멤버 함수만 접근 가능 (default 접근 권한)
• protected 멤버 함수나 파생 클래스에서만 접근 가능
struct 기본적으로 public 접근 권한이면
Class 변수와 함수가 기본적으로 private 접근권한!
[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개씩 생성된다.
멤버 함수는 객체 개수 상관없이 코드 메모리에 한개만 만들어진다.

반응형
댓글