아래의 소스를보시면
일단 class POINT 를만들고 케릭터객체로 네임을만든뒤 POINT 생성자를 생성하여
메인문에서 네임을받아오고 그후에 Po[0]에 그 생성자값을 전달하여
name메모리할당후 name를 카피하고 showtime을 이용해서 그카피한네임을 리턴시키고
상속받은 potry를 이용해 그 showtime을 사용하는건데
이름입력뒤 '입력받은 이름은 :' 이건 나오는데 그후에 showtime 반환이 이상합니다.
뭐랄까 return해야할게 name이아니고 Po라고도 생각해봣지만 아무래도 아닌거같고, 뭔지모르겟습니다 ㅠ
더운날 고수님들 고생좀부탁드릴게요 ㅠㅠ 정확한 이유좀
아그리고 한가지더물어볼게있는데요
클레스 포인트를 만들고 포인터생성자를만들때 처음에 디폴트생성자를 안만들고 그냥 포인터생성자를만들고 컴파일하니까 오류가나던데 왜그런건가요?
#include<iostream>
using namespace std;
class POINT
{
private:
char *name;
public:
POINT(){}
POINT(char *name)
{
this->name = new char[strlen(name)+1];
strcpy(this->name,name);
}
char* Showtime()
{
return name;
}
~POINT(){}
};
POINT *Po[100];
class potry : public POINT
{
public:
potry()
{
cout<<"입력받은 이름은 : "<<Showtime();
//cout<<"내이름은 :"<<endl;
}
};
void main()
{
int i = 0;
char name[20];
cout<<"이름 입력:";
cin>>name;
Po[0] = new POINT(name);
potry Po2;
}
|