3 개의 클래스 A, B 및 C가 있습니다. C는 A와 B에서 파생됩니다. 클래스 C의 포인터에 대한 포인터를 가져 와서 A *로 캐스팅하고 B * *의하여 B를 누르고 변수 **는 .I이
다중 상속의 파생 클래스 포인터에 대한 포인터
#include "conio.h"
#include "stdio.h"
#include "string.h"
class A
{
public:
A()
{
strA=new char[30];
strcpy(strA,"class A");
}
char *strA;
};
class B
{
public:
B()
{
strB=new char[30];
strcpy(strB,"class B");
}
char *strB;
};
class C : public A, public B
{
public:
C()
{
strC=new char[30];
strcpy(strC,"class C");
}
char *strC;
};
int main(void)
{
C* ptrC=new C();
A * Aptr=(A*)ptrC;
printf("\n class A value : %s",Aptr->strA);
B * Bptr=(B*)ptrC;
printf("\n class B value :%s",Bptr->strB);
printf("\n\nnow with double pointer ");
A ** AdoublePtr=(A **)&ptrC;
Aptr=*AdoublePtr;
printf("\n class A value : %s",Aptr->strA);
B * * BdoublePtr=(B **)&ptrC;
Bptr=* BdoublePtr;
printf("\n class B value : %s",Bptr->strB);
getch();
return 0;
}
여분의 html 마크 업없이 코드를 게시하고 4 개의 공백만큼 들여 쓰기하거나 코드 버튼을 눌러 포맷 된 것처럼 보일 수 있습니까? –
질문하기. –
여기에 질문이 없지만 C-style 캐스트를 다중 상속과 함께 사용하면 거의 확실하게 잘못 될 것입니다. 대신에'static_cast' 또는'dynamic_cast'를 사용하십시오. –