구조체와 클래스

킴스코딩클럽·2022년 11월 18일
1

CS기초 시리즈

목록 보기
52/71

구조체 : 멤버 변수들만 존재하는 경우
클래스 : 멤버 함수가 필요한 경우

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가 불가능

profile
공부 기록용

0개의 댓글