오늘은 내가 .I이 책은 말한다 problem.as, G ++ 객체 모델
class Concrete1 {
public:
int val;
char bit1;
};
class Concrete2 : public Concrete1 {
public:
char bit2;
};
class Concrete3 : public Concrete2 {
public:
char bit3;
};
내가와 Mingw g ++에서 코드를 실행
발생>는 <을 읽고, 세 종류의 공간은 8, 12, 12.Bs2012에서 코드를 실행할 때 세 클래스의 공간은 8, 12, 16입니다. 소스 코드의 경우 vs2012의 코드는 문제가 없습니다. 그러나 g ++의 공간에 대해서는 몇 가지 질문이 있습니다. 문제가 있는지 확인하기 위해 샘플 코드를 작성하십시오. 샘플 코드는 다음과 같이int main(void)
{
Concrete2 con2;
memset(&con2, 0, sizeof(con2));
Concrete3 con3;
con3.val = 3;
con3.bit2 = 4;
con3.bit3 = 5;
Concrete2* con_ptr2 = &con2;
Concrete2* con_ptr3 = &con3;
*con_ptr3 = *con_ptr2;
cout << con3.bit3<< endl;
cout << sizeof(Concrete1) << endl;
cout << sizeof(Concrete2) << endl;
cout << sizeof(Concrete3) << endl;
return 0;
}
과 ++ g의 객체 모델
이 코드는 코드가 끝난하지만 문제 함께 "* con_ptr3 = * con_ptr2;"상기 con3.bit3 5 0이 아닌? 누구든지 나를 도울 수 있습니까?
단계별로 단계별로 중단 점을 설정하십시오. – nhgrif
내가 hava 중단 점을 설정하고 결과를 설명하는 방법을 모르겠 result.But을 봤어! – user2861706
모든 행의 모든 포인터와 변수의 값은 무엇입니까? – nhgrif