Âè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: };
¢¨¤³¤Î¥×¥í¥°¥é¥à¤Ï¥³¥ó¥Ñ¥¤¥ë¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
final»ØÄê»Ò¤Ï¥¯¥é¥¹¡¢²¾ÁÛ´Ø¿ô¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¡¢¥¯¥é¥¹¤Î¾ì¹ç¤Ï´ðËÜ¥¯¥é¥¹¤È¤·¤Æ»ÈÍѤǤ­¤Ê¤¯¤Ê¤ê¡¢²¾ÁÛ´Ø¿ô¤Î¾ì¹ç¤Ï¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¤³¤È¤¬½ÐÍè¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
override»ØÄê»Ò¤Ï¡¢²¾ÁÛ´Ø¿ô¤Ë»ÈÍѤǤ­¡¢¤½¤Î²¾ÁÛ´Ø¿ô¤¬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤·¤Æ¤¤¤ë¤«¤ò³Îǧ½ÐÍè¤Þ¤¹¡£
¤³¤ì¤é¤ò»ÈÍѤ¹¤ì¤Ð¡¢¥×¥í¥°¥é¥à¼Â¹ÔÁ°¤Ë¤³¤¦¤¤¤Ã¤¿´Ê°×¤Ê¥ß¥¹¤ò¸º¤é¤¹¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¼¡¤Ë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¤Ë¤·¤Æ¤¤¤Þ¤·¤¿¡£
C++11¤Ç¤Ïdelete»ØÄê»Ò¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æpublic¤Ë½ñ¤¤¤¿¾õÂ֤Ƕػ߽ÐÍè¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
  1: class Hoge
  2: {
  3: public:
  4:	Hoge(){}
  5:	~Hoge(){}
  6:	Hoge(const Hoge& obj) = delete;//ºï½ü
  7:	Hoge& operator=(const Hoge& obj) = delete;//ºï½ü
  8: };
¤³¤Î¤è¤¦¤Ëʤó¤Ç¥³¥ó¥¹¥È¥é¥¯¥¿´Ø·¸¤¬½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¸«¤¿ÌܤǶػߤµ¤ì¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¢¨¤Á¤Ê¤ß¤Ë¡¢C++11¤Ç¤Ï±¦ÊÕÃÍ»²¾È¤¬¤¢¤ë¤¿¤á¡¢´°Á´¤Ë¶Ø»ß¤¹¤ë¤Ë¤Ï¥à¡¼¥Ö¥³¥ó¥¹¥È¥é¥¯¥¿¤âdelete¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£
¤Þ¤¿¡¢delete»ØÄê»Ò¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢´Ø¿ô¤Î¥ª¡¼¥Ð¡¼¥í¡¼¥É¤Î¶Ø»ß¤ò¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£
  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²ó
¼¡¢ªC++11¹ÖºÂ16²ó

#vote(±¦ÊÕÃÍ»²¾È¤ÎÀâÌÀ¤·¤È¤é¤ó¤ä¤ó[0],µö¤·¤Æ¤¯¤À¤µ¤¤[0],²¿¤Ç¤â¤·¤Þ¤¹¤«¤é¡ª[0])


¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS