#include<iostream>
using namespace std;
class dog
{
public:
virtual void move() const{ cout << \"왈왈\" << endl; }
void move(int age) {cout << \"개나이\" << age <<endl;}
};
class puppy: public dog
{
public:
virtual void move() const {cout << \"보우보우\" <<endl; }
void fly() { cout << \"dsgdg\"; }
};
void main()
{
/*dog *b;
puppy *a = dynamic_cast<puppy*> (b);
a->fly();
delete a;*/
/*dog *v=new puppy;
puppy *a = dynamic_cast<puppy*> (v);*/
puppy *a;
a->fly();
}
puppy *a; a->fly(); 이거냐
아놔 puppy *a; a->fly(); 이게 먼가요
아 적분훃
찌찌뽕
근데 사실 puppy *a; a->fly(); 이 코드는 에러 없이 실행될껄?ㅋㅋ 왜냐면 fly함수내에서 멤버변수를 사용하지 않으니깐ㅋㅋ 이런 키사노바
ㅠㅠ
디버깅 코드가 잔뜩 들어가 있다면 에러를 뱉을지도..
근데 왜 실행도중 오류뜸 ㅜㅜ
ㅠㅠ
왜그러는거임 ㅜㅜ
그건 아마 초기화하지 않은 변수를 사용했다는 에러겠지. 어찌됐던 저건 1000000%틀린 코드잖아ㅋㅋㅋㅋ
근데 위에 있는dog *v=new puppy; puppy *a = dynamic_cast<puppy*> (v);*/ puppy *a; 이부부 주석풀면 제대로돌아감
puppy *a= new puppy; 객체를 만들어야지 호출을 하던 말던 하지 않겠냐
왜틀린거죠 지금 포인터는 자식코드를 가르키고있는데요
인스턴스가 엄써요
디버깅용 루틴 때문에 그런듯.
헐 그럼 puppy *a 는 puppy를 가르키고있는게 아닌가요?
포인터가 가리키긴 뭘 가리켜. 아무것도 안가리키고 있는데. (정확히는 쓰레기를 가리키고 있지)
이것도 할당받아야되는구나
너는 c부터 다시 공부하고 c++해야겠구나
오오미
뒷통수맞음
그럼 궁금한게 하나있는데여
으이궁! [m]
어,, DMW언니다
dog *a = new puppy 라고 하면 왜 dog 객체를 가르키는거죠?
어어 대마왕 횽 짱 오랜만이라능?
아니 만들어진거 puppy객체고 가리키는 것도 puppy객체란다.
헐 dog *a = new puppy 즉 *a 는 puppy 객체르 할당받은건데 왜 dog 엄마 객체를가르키져?
puppy의 인스턴스를 가리키는거라니깐
dog *a =new puppy;나 puppy *b = new puppy;나 a,b는 둘다 puppy인스턴스를 가리키는거란다
일단 dog은 각은 형의 객체가 아닌데 이유가뭐여
오오미 오오미 오오미 감사합니다 ㅋ
캬 울성님들 착하네