Âè15²ó¤«¤é¤Ï¡¢C++11¤Ç¼ÂÁõ¤µ¤ì¤¿´Êñ¤ËÍøÍѤǤ¤ëµ¡Ç½¤ò²¿¸Ä¤«¾Ò²ð¤·¤Þ¤¹¡£ ºÇ½é¤Ëfinal¡¢override»ØÄê»Ò¤ò¾Ò²ð¤·¤Þ¤¹¡£ 1: class Super final 2: { 3: Super(){} 4: ~Super(){} 5: virtual void func() final {} 6: virtual void hoge() {} 7: }; 8: 9: class Sub : public Super//final»ØÄê»Ò¤Î¥¯¥é¥¹¤ò´ðËÜ¥¯¥é¥¹¤Ë»È¤¦¤³¤È¤¬½ÐÍè¤Ê¤¤ 10: { 11: Sub(); 12: ~Sub(); 13: void func(){}//ƱÍͤËfinal»ØÄê»Ò¤Î²¾ÁÛ´Ø¿ô¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¤ 14: 15: virtual void hoge()override{}//¥ª¡¼¥Ð¥é¥¤¥É¤µ¤·¤Æ¤¤¤ë¤«ÌÀ¼¨½ÐÍè¤ë 16: }; ¢¨¤³¤Î¥×¥í¥°¥é¥à¤Ï¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ ¼¡¤Ëdelete»ØÄê»Ò¤ò¾Ò²ð¤·¤Þ¤¹¡£ 1: class Hoge 2: { 3: private: 4: Hoge(const Hoge& obj){} 5: Hoge& operator=(const Hoge& obj){} 6: 7: public: 8: Hoge(){} 9: ~Hoge(){} 10: }; ¥³¥Ô¡¼¥³¥ó¥¹¥È¥é¥¯¥¿¡¢ÂåÆþ±é»»»Ò¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤òprivate¤Ë¤·¤Æ¤¤¤Þ¤·¤¿¡£ 1: class Hoge 2: { 3: public: 4: Hoge(){} 5: ~Hoge(){} 6: Hoge(const Hoge& obj) = delete;//ºï½ü 7: Hoge& operator=(const Hoge& obj) = delete;//ºï½ü 8: }; ¤³¤Î¤è¤¦¤Ëʤó¤Ç¥³¥ó¥¹¥È¥é¥¯¥¿´Ø·¸¤¬½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¸«¤¿ÌܤǶػߤµ¤ì¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ 1: void func(int) = delete; 2: 3: void func(int n) 4: { 5: return; 6: } 7: 8: void func(float n) 9: { 10: return; 11: } 12: 13: int main() 14: { 15: func(5);//¥¨¥é¡¼ 16: 17: func(5.5f);//OK 18: 19: return 0; 20: } ¼ÂºÝ¤Ë»ÈÍѤ¹¤ë¾ì¹ç¤Ï¡¢¥Æ¥ó¥×¥ì¡¼¥È¤ÈÁȤ߹ç¤ï¤»¤ë¤È»×¤¤¤Þ¤¹¡£ 1: void func(int) = delete; 2: 3: template<typename T> 4: void func(T a){} 5: 6: int main() 7: { 8: func('a');//OK 9: func(1.0);//OK 10: 11: func(1);//¥¨¥é¡¼ 12: 13: return 0; 14: } ¹¤¤ÄêµÁ¡Ê»»½Ñ·¿¡¢»²¾È·¿Åù¡Ë¤Ç¶Ø»ß¤Î¾ì¹ç¤Ï<type_traits>¡¢·¿¤Ç¤Î¶Ø»ß¤Ê¤édelete¤È»È¤¤Ê¬¤±¤ë¤È¤¤¤¤¤Ç¤·¤ç¤¦¡£ ¼¡¤Ë¡¢default»ØÄê»Ò¤Ç¤¹¡£ 1: class Hoge 2: { 3: public: 4: Hoge() = default; 5: ~Hoge() = default; 6: }; default»ØÄê»Ò¤ò»ÈÍѤ¹¤ë¤È¡¢³Æ¥³¥ó¥¹¥È¥é¥¯¥¿µÚ¤Ó¥Ç¥¹¥È¥é¥¯¥¿¤ò¼«Æ°À¸À®¤·¤¿¤â¤Î¤òÍøÍѤ¹¤ë¤È¤¤¤¦¤³¤È¤òÌÀ¼¨½ÐÍè¤Þ¤¹¡£½¾Íè¤Î½ñ¤¤¤Æ¤¤¤Ê¤¤¾õÂÖ¤ÈÊѲ½¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢½ñ¤¤¤Æ¤¤¤Ê¤¤¤È¾¿Í¤¬¸«¤¿»þ¤Ë°Õ¿ÞŪ¤Ê¤Î¤«¡¢½ñ¤Ëº¤ì¤Ê¤Î¤«¤¬ÉÔÌÀÎƤˤʤë²ÄǽÀ¤¬¤¢¤ê¤Þ¤¹¡£default¤ÇÌÀ¼¨Åª¤Ë½ñ¤¯¤³¤È¤Ë¤è¤Ã¤Æʬ¤«¤ê¤ä¤¹¤¤ÍѤ˽ÐÍè¤Þ¤¹¡£ ¤³¤ì¤é¤Ï½ñ¤«¤Ê¤¯¤Æ¤âÌäÂê¤Ï¤Ê¤¤µ¡Ç½¤Ç¤¹¤¬¡¢²ÄÆÉÀ¤¬¤«¤Ê¤ê¾å¤¬¤ë¤Î¤ÇÍøÍѤ¹¤ë¤è¤¦¤Ë¤¹¤ë¤È°ÂÁ´À¤Î¹â¤¯½ÐÍè¤ë¤Ç¤·¤ç¤¦¡£ °Ê¾å¤Ç¤ª¤Þ¤±¡¤ò½ª¤ï¤ê¤Þ¤¹¡£ Á°¢ªC++11¹ÖºÂ14²ó |