클래스를 사용할려하면 new 연산자로 사용할 수있게 만들잖아
이게 개념이 선언만하면 데이터안에 이런게 있다더라 하는정도이고
new 연산자를 사용하면 값을 넣을 수 있게 데이터공간이 할당되는 개념으로 이해해도 돼?
만약 이게 맞으면 궁금한게 new연산자로 선언 안하는건 어디다가 사용해야하는지 감이 안오는데 보통 어디서 사용해?
클래스를 사용할려하면 new 연산자로 사용할 수있게 만들잖아
이게 개념이 선언만하면 데이터안에 이런게 있다더라 하는정도이고
new 연산자를 사용하면 값을 넣을 수 있게 데이터공간이 할당되는 개념으로 이해해도 돼?
만약 이게 맞으면 궁금한게 new연산자로 선언 안하는건 어디다가 사용해야하는지 감이 안오는데 보통 어디서 사용해?
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members
정적 클래스의 사용 예시를 묻는거임?
열심히 읽었는데 잘은 모르겠지만 이거보다 더 기초적인 건데 유튜브에서 일반적인 class를 사용할려고 할때 new를 사용해야 값을 넣을 수잇다고 하더라구 나는 왜 new를 써야되는지가 잘 이해가 안돼
C#이면 primitive아니면 무조건 쓰려면 new로 생성해야 하지 않아?
C#말고 C++이나 C를 해봤는진 모르겠지만 그쪽으로 비유하자면 그냥 무조건 포인터인 느낌?
c는 겉할기 식으로 간단하게만 해봤는데 포인터는 가르키는 느낌이잖아
근데 클레스는 뭔가를 만들더라구 근데 만들거면 뒤에 = new 이름 ();를 안써도 만들어지는데 왜 해야 되는지가 잘 이해가안되성
안만들어져. 그리고 C#도 가리키는 느낌이야
new 안하면 안 만들어진단 얘기임
new 연산자를 사용하면 값을 넣을 수 있게 데이터공간이 할당되는 개념으로 이해해도 돼? 만약 이게 맞으면 궁금한게 new연산자로 선언 안하는건 어디다가 사용해야하는지 감이 안오는데 보통 어디서 사용해? ㄴ new연산자로 선언 안하는게 뭘 말하는거야?
City라는 클래스가 있으면 City seoul; 이거는 값을 사용할 수 없고 City seoul = new City(); 이렇게 해야만 값도 넣고 사용도 할 수 있게 되는데 나는 1차원적이게 당연하게 사용할려고 선언하는건데 더 길게 new를 붙인다는거면 안 썻을 때도 다른 용도로 쓰이지않을까 싶어서
클래스는 추상화의 개념이 들어가기 시작하면 네가 말한 다른 용도로 사용하는 경우가 자주 나오는데 네가 예시로든 내용을 조금 가져와 보자면 City를 상속받는 Seoul, Busan클래스가 있다고 쳐보자. 근데 너는 이걸 조건에 따라서 city라는 놈에 넣고싶은거야 그러면 아래와 같이 쓸 수 있겠지. City city; if (hasPort) city = new Busan(); else city = new Seoul();
고마웡
비유로 설명할께. City seoul; //이건 City를 담아두는 상자를 만든걸로 보면 돼. City seoul = new City() // 이건 City를 담아두는 상자를 하나 만들고, 거기에 City를 만들어서 넣은거야. City busan = seoul // 이건 seoul에 넣어둔 City를 busan이라는 상자에 넣은거고 이런 비유면 적절하겠음? 따라서 City seoul은 사용할수없는 값이 아님. 상자라고 보면 돼. 여기에 뭔가를 담는 용도로 쓰는거지
c언어에서 포인터에 대한 개념을 좀 명확하게 하면 저게 그렇게 헤깔릴 문제는 아닌데, 지금 너가 혼란스러워 하는 부분은 꼭 명확하게 하고 갔으면 좋겠어. 이런부분에서 거의 90%가 프로그래밍 했던 애들이 나가떨어지거든
음 나도 공부중이라 제대로 답변해줄지 모르겠는데 일단 써볼게 new 연산자는 데이터 영역중 힙 영역에 새로운 공간을 할당하는거야. new 뒤의 변수 크기 만큼말이지. 일반적으로 우리가 선언하는 클래스는 그 할당된 공간의 주솟값을 나타내는 변수인거야 GameObject go <- 는 그냥 주솟값만을 담고있어 그러나 new GameObject() 된 녀석을 대입해줌으로써 go가 새로 할당된 그 메모리의 주소를 갖게 되는거지
그러니까 너가 위에 쓴 것 처럼 City seoul; 에서 seoul은 그래서 그 녀석이 메모리 어디에 위치하고 있는데? 를 나타내 줄 뿐이야 실제로 우리가 City를 제작해서 그 안을 채우려면 힙이라는 메모리 서랍장을 열어서 알맞은 크기만큼 할당을 하는거지 그리고 seoul이라는 변수는 이번에 할당한 그녀석. 3-4 구역에 있음. 을 저장할 뿐인거지
그래서 그냥 City myCity; 라는 변수를 생성해두고 그 myCity를 여기저기 할당한 실제 City들 중 어느 City를 가르킬건지? 를 취사선택 할 수 있지
게임 제작적인걸로 비유하자면 Monster들은 Character _player; 를 시작하자마자 선언한다고 해보자 100만 마리의 몬스터가 생성되면, 100만 개의 Character _player가 선언되겠네? 그럼 그 _player는 매번 다른 데이터를 저장하는 걸까? 아니지 실제 내 캐릭터인 Character player = new Character(); 로 게임매니저가 시작할때 할당을 해놨기 때문에, 그 할당된 사물함 번호 4-187을 모든 100만마리의 몬스터가 _player라는 변수를 통해 알 수 있는거야
물론 _player가 4-187에 있다는걸 알려주는 작업이 필요하겠지만 매번 새로운 메모리를 할당해서 거기에 데이터를 전부 쑤셔넣는 방식보단 간단하겠지
무슨 느낌인지 알것같아 고마웡
지금단계에선 별로 안중요할수도 있는데 new로 선언한다고 해서 꼭 힙영역에 할당되는 것은 아님