#include <iostream>
using namespace std;
class Human {
bool civilized;
public:
Human() {
civilized = true;
}
void attack(Human & other) {
if(civilized) {
cout << "I can't attack!" << endl;
}
else {
cout << "kill you kill you!" << endl;
}
}
};
int main(void) {
Human human;
human.attack(human);
return 0;
}
C++로 시작하는 언리얼 4 게임 프로그래밍이란 책을 보고 따라하다보니 이런 예제가 나왔습니다.
void attack 함수의 인자값에 Human만 써도 Human & other과 다를게 없던데 & other을 왜 쓰는지 설명해주실 분 계신가요?
포인터는 뭔지 암?
계신가요->계시나요 (계시다는 동사라 형용사 뒤에 쓰이는 어미 -ㄴ가(요)를 붙인 계신가요는 적절하지 않고, 주로 동사 뒤에 쓰이는 어미 -나(요)를 붙인 계시나요가 적절함) [리듬 맞춤법 봇♬]
주소값 전달하는거 아닙니다..
Human 이라는 데이터형을 가진 변수를 받긴 해야 하는데 함수 내에서 그 값을 사용하지 않으니 데이터형만 쓰고 굳이 이름을 주지 않은거군요!
&는 주소연산자밖에 몰라서 저 &의 역할이 뭔지 궁금했었는데 "C++ &의 의미"로 검색해보니 함수 매개변수로서의 참조로 사용한다고도 하네요.
써도되고 안써도되는데 가독성생각해서 쓴듯? #define UNUSED 이런식으로 해놓고 저자리에 UNUSED 쓰는경우도 봤는데 내가 질문을 맞게 이해한건가
아직 완전히 이해된건 아니라서 좀 더 공부해봐야 겠네요. 164260님 감사합니당
넵 책에서는 Human & other이 써있는데 인자로 넣어야 되는 값도, 나오는 값도 Human만 쓴 것과 다를 바가 없어서 혼란스러워하던 참이었어요 ㅠㅠ
가독성때문에 쓰는 거였군요! 머학원생님 감사합니다 (__)
주소값 주는거나 똑같음 근데 저게 편함 - return 0;
C++부터 빡시게 공부하고 하시는걸 추천함. C++ 가 별거 아닌것처럼 보이는 것들로 뒤통수를 오함마로 찍어버리는 언어임 - return 0;
주소연산자랑 제 질문에서의 & other 이 같은 의미로 쓰인다는 말씀이신가요?
책에 기본 설명이 잘 되어있는거 같아서 샀는데 설명이 좀 부실하네요 ㅠㅠ
제가 난독인가요? 머학원생흉대로 변수로 넘겨줬으나 바디에서 참조를 안하니 걍 UNUSED로 생각하시는건데 커헠흉이 얘기하시는건 다른 원론적인 얘기인듯한데요;;
근데 저 예제는 예제가 잘못된거 아닌가요? 보통은 미래 혹은 deprecated된 인터페이스에서 UNUSED형태로 마킹하는 경우는 있는데 저건 아무리 봐도 (본문 구현을 봐도;;) 집필과정에서 실수로 누락된 경우 같은데요;;
미래->미래를 위해 미리 할당하거나
본문에는 없지만 책에선 "civilized가 true이면 다른 사람에게 폭력을 가하지 않는다"와 같은 주석이 있었습니다.
그리고 원래의 예제는 클래스 상속 관련 예제라서, Human 뿐만 아니라 Mammal, Cat, Dog도 있었는데 코드가 너무 길어 보기 힘드실까봐 알고싶은 부분만 뽑아 쓴겁니당..
혼란을 드려 죄송합니다 ㅠㅠ
제가 보기에도 짤린거거나 사용이 필요할 상황에 대비한게 아닌가 싶습닏ㄱㆍ - return 0;
두 분이 그리 얘기하시니 내일 출판사에 전화해서 물어보도록 하겠습니다!