변환함수와 복사생성자 질문
이 역시 soen.kr을 보고 의문점이 생겼는데요..
class Time
{
private:
int hour,min,sec;
public:
operator Time() {
return 123;
}//자기자신을 갖는 변환함수?
Time(int abssec,int dld=0) {
hour=abssec/3600;
min=(abssec/60)%60;
sec=abssec%60;
cout<<"객체생성"<
}
~Time() {
cout<<"객체파괴"<
}
void OutTime() {
printf("현재 시간은 %d:%d:%d입니다.\n",hour,min,sec);
}
};
위의 코드에서
operator Time() {
return 123;
}//자기자신을 갖는 변환함수?
이 부분이 의미가 있을까요?
2) 변환 생성자를 선언할때 레퍼런스를 받는게 나을까요 아니면 값을 받는 것이 더 나을까요?(차이가 있는지 여부)
class Ex {
...
}
class Ex2 {
...
Ex2(Ex ex) {
...
}
or
Ex2(const Ex& ex) {
...
}
3) 객체에 재대입 하는것은 정상적인 일인가요?
soen.kr의 c++문법강좌 26-3 변환 생성자파트를 보시면 다음과 같은 클래스가 선언되어 있습니다..
class Time
{
private:
int hour,min,sec;
public:
Time() { }
Time(int abssec) {
hour=abssec/3600;
min=(abssec/60)%60;
sec=abssec%60;
}
void OutTime() {
printf("현재 시간은 %d:%d:%d입니다.\n",hour,min,sec);
}
};
void main()
{
Time Now(3723);
Now.OutTime();
}
...
그리고 다음과 같이 사용을 했는데요..
객체 내부에 동적할당을 사용하니, 대입된 객체들이 소멸자를 호출하지 못해서 내부적으로 동적할당된 변수를 delete를 못해서 다운을 일으키던데요.. 다음과 같은 방법을 사용해도 괜찮은 건가요?
Time t;
t = 21421314;
t = 4242;
t = 3244;
//내부적으로 동적할당을 사용하지 않으면 에러가 발생하지 않음.
//내부적으로 동적할당을 사용하면 마지막에 대입된 Time(3244) 객체의 소멸자만 호출됨.
아니면 내부적인 동적할당을 사용할땐 operator=를 정의해 주어야 하나요?
4) 함수의 리턴값으로 객체를 사용하면 왜 복사 생성자가 호출되나요?
후..
질문이 많았네요..
초보라서 이것저것 궁금하네요 :)
해보시면 됩니다.
테스트 해보면 결과가 나오죠. ㅇ_ㅇ;;
http://codepad.org/
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기