ä»®æ³é¢æ°ããŒãã«ïŒvtableïŒã®ãªãŒããŒãããããŒãã«ããïŒã³ã³ãã€ã«æããªã¢ãŒãã£ãºã ãšå¥åŠã«ååž°ãããã³ãã¬ãŒããã¿ãŒã³
ãªããžã§ã¯ãæåã®ä»£åè©ã§ããä»®æ³é¢æ°ïŒvirtualïŒã«ããåçããªã¢ãŒãã£ãºã ã¯ãæè»ã§çŸããèšèšãå¯èœã«ããŸãããæ¥µéã®ããã©ãŒãã³ã¹ãæ±ããããã²ãŒã éçºã§ã¯ãé ããã³ã¹ãããååšããŸããæ¯ãã¬ãŒã äœäžåãåŒã°ãã匟å¹ãããŒãã£ã¯ã«ã«ãããŠãvtableïŒä»®æ³é¢æ°ããŒãã«ïŒã蟿ããã€ã³ã¿éæ¥åç §ãšãã³ã³ãã€ã©ã颿°ãã€ã³ã©ã€ã³å±éã§ããªãããšã«ãã颿°åŒã³åºããªãŒããŒãããã¯ç¡èŠã§ããªãè² è·ãšãªããŸããæ¬ç« ã§ã¯ãC++98æä»£ããã²ãŒã ããã°ã©ããæçšããŠããäŒèª¬ã®ææ³ãCRTPïŒCuriously Recurring Template PatternïŒå¥åŠã«ååž°ãããã³ãã¬ãŒããã¿ãŒã³ïŒãã培åºè§£åãä»®æ³é¢æ°ã®ãªãŒããŒãããã1ãµã€ã¯ã«ã»1ãã€ãããæ®ããã³ã³ãã€ã«æã«æ¶æ» ãããè¶ é«éãªéçããªã¢ãŒãã£ãºã ãå®çŸããã¢ãŒããã¯ãã£ãç¿åŸããŸãã
ãªã匟å¹ãããŒãã£ã¯ã«ã§ virtual ã䜿ããšã²ãŒã ãã«ã¯ã€ãã®ãïŒã€ã³ã©ã€ã³å±éã®é»å®³ããã£ãã·ã¥ãã¹ããããŠãªããžã§ã¯ãããšã® vptr ã¡ã¢ãªæ¶è²»ã®çå®ãåŠã³ãŸãã
掟çã¯ã©ã¹ãèªåèªèº«ãåºåºã¯ã©ã¹ã®ãã³ãã¬ãŒãåŒæ°ã«æž¡ãïŒïŒCRTPã®æ§æãã³ã³ãã€ã«æããŠã³ãã£ã¹ãã®å®å šæ§ããããŠã€ã³ã©ã€ã³åã®ä»çµã¿ãè§£åããŸãã
å ±éæ©èœïŒã«ãŠã³ããã¯ããŒã³ãåœããå€å®ïŒãéçã«æ³šå ¥ãã Mix-in èšèšãšãåçããªã¢ãŒãã£ãºã ãšã®é©åãªäœ¿ãåãåºæºããã¹ã¿ãŒããŸãã
ãã©ãŠã¶ã§JavaScriptãæå¹ã«ãããšããã©ãŠã¶å ã€ã³ããŒããŒã²ãŒã ãšãã¥ã¬ãŒã¿ãã¡ã¢ãªãããå¯èŠåãUMLã¯ã©ã¹å³ã察話å解説ãç解床ã¯ã€ãºãèµ·åããŸãã