House::House(const House &h)
{
cout<<h.address<<"을 초기화 한다"<<endl;
address = new char[strlen(h.address) + strlen("복사-1"+1)];
strcpy(address,h.address);
strcpy(address,"복사-1");
space= h.space;
telephone=h.telephone;
}
이렇게 되어있는데 밑의 데이터 멤버 h.space 와 h.telephone 은
왜 strcpy를 마저 이용해서 복사를 안해주는 건가요??
strcpy(address,h.address);
strcpy(address,"복사-1");
이걸 써주는건 대체 의도가 뭐죠?;;
strlen("복사 -1"+1)에서 "복사-1"은 메모리를 할당한 장소에 이름을 저장하는 것이라는데
이게 왜 필요한거죠?
다른 연산자들의 중복(overloading)을 보면 Fraction Fraction :: operator * (Fraction f) 로 정의 되는데
대입 연산자나 삽입 연산자 특히 대입 연산자는 왜 House& House::operator=(const House &h)
처럼 House &House-> 참조형이 있나요??
질문이 많아서 죄송합니다 간략히라도 좋으니 대답좀 해주세요 ㅠ
우선 House가 어떻게 생긴 클래스인지를 알아야 제대로 된 대답이 나올 것 같긴 한데, strcpy는 문자열 복사할 때 사용하는 거고, 멤버 space랑 telephone은 문자열 자료형이 아니라 strcpy를 사용하지 않고 값 복사를 해주는 거 같고. 왜 굳이 '복사-1'을 사용하는 지는 모르겠네.
그리고 참조형으로 인자를 받는 이유는, 그렇지 않을 경우에는 인자 값이 값복사가 일어나서 넘어오기 때문에 참조자로 받고 const 붙여서 사용하는 거임.