conv.h클래스의 메서드가 어떻게 호출되는지 설명 할 수 있습니까?
class Base
{
public:
void foo();
};
class Derived: public Base
{
public:
void bar();
};
class A {};
class B
{
public:
void koko();
};
conv.cpp
void Base::foo()
{
cout<<"stamm";
}
void Derived::bar()
{
cout<<"bar shoudn't work"<<endl;
}
void B::koko()
{
cout<<"koko shoudn't work"<<endl;
}
MAIN.CPP
출력#include "conv.h"
#include <iostream>
int main()
{
Base * a = new Base;
Derived * b = static_cast<Derived*>(a);
b->bar();
Derived * c = reinterpret_cast<Derived*>(a);
c->bar();
A* s1 = new A;
B* s2 = reinterpret_cast<B*>(s1);
s2->koko();
}
:
bar shoudn't work
bar shoudn't work
koko shoudn't work
어떻게 방법 줄 와서는 일에 성공한다 r에서 호출 그 시간에도 불구하고 파생되지 않은 Base 클래스를 만들었습니까 ?? 두 가지 유형의 변환 (정적 및 재 해석 캐스트)에서도 작동합니다.
위와 동일한 질문이지만 관련이없는 클래스 (A & B)와 동일한 질문이 있으십니까?
변환이 작동하지 않는 한 안전하지 않은 변환을 실행하기 위해'static_cast' 또는'reinterpret_cast'를 사용하여 컴파일러 검사를 무시하는 것은 바람직하지 않습니다. – Recker
거짓말하면 나쁜 일이 일어납니다. –