프로그래밍 학습주간
- 어제에 이어 오늘도 프로그래밍 학습주간으로 기초구문은 그래도 기존에도 많이 학습해와 오늘 부터 배우는 부분들이 원래도 헷갈리고 많이 어려웠던 부분들이라 TIL을 잘 정리하고자 한다.
클래스와 구조체
클래스
- 클래스 : 데이터와 메서드를 하나로 묶은 사용저 정의 타입
- 객체를 생성하기 위한 템플릿 또는 설계도 역할
class Player
{
public int Health;
public int Mana;
}
구조체
- 구조체 : 구초제는 여러개의 데이터를 묶어 하나의 사용자 정의 형식으로 만든것
- struct 키워드를 사용하여 선언
- 구조체의 멤버는 변수와 메서드로 구성, 멤버 접근시 .키워드 사용
public Struct Player
{
public int Health;
public int Mana;
}
그래서 둘의 차이가 정확히 뭐야?
- 모두 사용자 정의 형식을 만드는데 사용되지만
상속여부, 형식의차이(메모리 저장방식)
- 구조체는 값 형식이고 스택에 할당되고 복사될 때 값이 복사되고
- 클래스는 참조형식이라 힙에 할당된다.
- 구조체는 상속을 받을 수 없다. 클래스는 상속이가능
- 구조체가 좀더 간단한 작업에 사용되는편 class의 경우 메모리를 할당에 지속적으로 가비지 컬렉터를 괴롭힐 필요가 없다.
- 물론 에외가 있다고는 하지만 이정도만 알아둬도 당장은 괜찮을듯! 추가할 내용이 있으면 추후작성하자.
프로퍼티
- 프로퍼티는 get과 set 접근자를 통해 값을 읽고 설정하는 동작을 정의한다. 데이터의 보안을 위해 사용!
- 항상 public을 통해 사용을 했지만 앞으로 개발을 할때는 이 프로퍼티를 잘 쓰는 습관을 들이겠다고 최근에 많이 생각했던 부분이다.
class Person
{
private string name;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
}
- 이런식으로 get은 반환 set은 설정의 키워드로 생각하면 좋다. set의 경우 접근제한자를 사용해 값설정을 제한할 수 도있다.
오늘의 회고
- 생각보다 막상 정리하고 나니 구조체와 class의 차이를 조금은 알게 된 기분이다. 막상 두개의 차이가 메모리의 할당방식이라는 생각이 드니 결국 경험적으로 어떤 부분에선 어떤것을 사용하는지 좋은가에 대해 많이 생각해 봐야 할것같다.(최근 보았던 모 회서 기술면접에서 물어봤던 질문중 하나, 이번기회에 잘 정리해두자)
- 내일은 상속과 추상인데 강의 듣는게 생각보다 엄청 재미있고 몰랐던 부분을 알아가는 즐거움이 있는 하루였다.
- 코딩테스트같이 문제푸는것도 생각보다 재미있다. 같은 팀원분들 알려주면서 나도 새롭게 배우는 부분도있고 c++로만 하다 콘솔창 쓰니 어색한것도 있고?
- 게임 빨리 만들고싶다는 생각이 요즘 좀 드는것같다 유니티 안쓴지 너무 오래된기분? 막상 2~3일밖에안되었지만
- 팀원 분들과 좀 더 소통많이해서 많은걸 알려드려야겠다고 생각했다.