2009ǯ07��24��
C++ �Ǥϥ��㥹�Ȥǥ��ɥ쥹���Ѥ���礬����ޤ�
#include <stdio.h> struct A { int a; }; struct B { int b; }; struct C : public A, public B { }; int main() { C *c = new C(); B *b = c; A *a = c; printf("C = %p\n", static_cast<void*>(c)); printf("B = %p\n", static_cast<void*>(b)); printf("A = %p\n", static_cast<void*>(a)); return 0; }���Υץ������ν��Ϸ�̤ϡ�C �� A �Υ��ɥ쥹���������ΤǤ�����B �����ۤʤ�ޤ�������ϡ�C++ ��¿�ŷѾ���������뤿��ˡ����㥹�ȤΤ��Ӥ˥��ɥ쥹�򤺤餹����Ǥ���class C (��̩�ˤ� struct �Ǥ������ǥե���Ȥθ���°�����ۤʤ�����ǡ��¼�Ʊ���Ǥ�) �μ��Τϡ�class A �μ��Τ� class B �μ��Τ��¤٤��褦�ʥ쥤�����Ȥǥ��������֤���ޤ������Τ��� class B �Ȥ��ƻ��Ȥ���ݤˤϡ�class A �Υ��С��� vtbl �Υ������ι�פ֤�������ɥ쥹�������ʤ��Τ褦�ʥ����ɤ򥳥�ѥ��餬��������ˤ櫓�Ǥ���
���Τ��� C �δ��Фǡ����ä��� void* �� intptr_t �ʤɤ˥��֥������ȤΥ��ɥ쥹���Ǽ�����ꤹ��ȡ��������ʵ�ư��Ǻ�ޤ�����礬����ޤ���
Embedded C++ �ǤϤ��⤽��¿�ŷѾ���¸�ߤ��ޤ��󤷡������ǥ��󥰵���ʤɤǶػߤ���Ƥ������¿���Ȼפ��ޤ��Τǡ��Ȥ߹��ߥץ�����ߥ󥰤ˤ����ƤϤ��ޤ�ռ�����ɬ�פ�̵�����Ȥ��⤷��ޤ��󤬡� �Ϥޤ�Ȥ�ä����ʾ��⤢�뤫�⤷��ޤ���
�ɵ� : @ssrisk ����˥����Ȥ򤤤������ޤ�����
http://twitter.com/sscrisk/status/2812305646
http://twitter.com/sscrisk/status/2813260721
�Τ��˼긵�� S&G �� p.426 �ˡ���p�Ѵ� ������ void * ���Ǥʤ���Фʤ�ʤ��פȽ񤤤Ƥ���ޤ��������ɤ������ޤ�����static_cast<type>(expr) �ϡ������ʥ��㥹�Ȥ���ǽ�ʾ��Τߥ��㥹�Ȥ������������ܤʾ��ϥ���ѥ��륨�顼�ˤʤ�Τǰ¿��Ǥ���
���⤽�� C++ �� printf ��Ȥ��ʤȤ����äǤ���ޤ����������̣����� C �� void * ���׵᤹��ؿ��� class �ؤΥݥ��󥿤��Ϥ������Υ���ץ�Ǥ⤢��ޤ��͡��ʸ����� ����