구조체 : 멤버 변수들만 존재하는 경우
클래스 : 멤버 함수가 필요한 경우
void SandC()
{
{
struct Position
{
int x;
int y;
void Dosomething()
{
std::cout << "hello world\n";
}
};
Position pts;
pts.x = 1;
pts.Dosomething();
}
{
class Position
{
public:
int x;
void Dosomething()
{
std::cout << "hello world\n";
}
private:
int y;
};
Position pt;
pt.x = 1;
pt.y = 1;
//private으로 접근 불가
}
}
void sizeis()
{
class MyClass
{
int x;
char y;
void Print();
void Print1();
void Print2();
};
std::cout << sizeof(MyClass) << std::endl;
//페딩에 의해 4+1(+3) -> 8바이트 + 함수는 영향 없음
//클래스를 관리하는 다른 구역이 따로 있음
//private + public은 runtime시 필요없음
//클래스에서 사용하는 멤버함수들을 관리하는 함수 테이블이 존재함
//구조체도 이런 테이블이 만들어짐
}
c++의 구조체는 모든 멤버가 public인 클래스와 동일
구조체는 캡슐화가 가능하지않음 -> oop가 불가능