c++ 클래스 관련질문..
민들레
1.위 코드에서 classone의 public의 첫함수에서 책에나온거 그대로 따라한건데 아직 coolguy라는 변수를 선언하지도 않았는데(나중에 (a)에서 선언함)어떻게 프로그램이 작동하는건가요?? (혹시 class내에서는 선언순서가 상관없는건지;)혹시몰라서 (a)부분 지우니까 coolguy라는 변수가 선언안됐다고 에러뜨던데
2.그리고 저 setCoolguy라는 함수에서 그냥 저렇게 안하고void setCoolguy(coolguy);라고 바로 끝내면 왜 안되나요??(만약 class내에서 선언순서가 관련없다면 coolguy자체가 string으로 선언됐으니 상관없이 돼야하는거아님?)(이부분은 책에도 자세히 설명이 안돼있음..)
c++시작한지 얼마안돼서 하나도 모르겠습니다 좀 도와주십쇼..
-
슬S2아
친절한답변 감사합니다ㅠㅠ
-
카이
네 메소드가 먼저와도 되고 변수가 먼저와도 됩니다
어짜피 클래스 내에 존재하는 메소드나 변수들은 객체를 생성할때 모두 동시에 메모리에 할당되니까요 -
호습다
그러면 한 class내에서는 변수가 어디서 선언되든 다 이미 선언된걸로 친다는거죠?
-
진달래
아 ㄱㅅㄳ
-
좍좍
세터 함수의 매개변수에 s를 선언하는 이유가 궁금하신건가요? 세터 함수는 외부에서 호출되고 호출될때 넘겨지는 문자열을 coolguy변수에 저장하는 역할입니다
넘겨지는 문자열을 받으려면 변수가 하나 더있어야겠죠
매개변수에는 이미 선언된 변수가 올수 없습니다 -
원술
그러니까세터에서 굳이 coolguy 변수를 바로 사용하지못하고 그 함수내에서 새로 변수를 생성해야하는 이유가 잘 이해가 안돼서요 ;
그냥 setcoolguy(coolguy);이런식으오 하니까 에러뜨던데.. -
아름나
1번질문은 생각하신 그대로 선언순서는 상관없는거구요 2번질문은 이해가 잘 안되네요
coolguy가 string이든 아니든 private로 선언되어있고 외부에서 변수에 직접적인 접근이 불가능하고 변수가 선언된 클래스 내에서는 접근이 가능하니까 간접적인 접근수단인 메소드를 제공하는건데 (setter/getter) 어떤게 궁금하신건가요?