ããç¨åº¦çµé¨ãç©ãã C++ããã°ã©ãã¯çµ¶å¯¾ã«virtualãã¹ãã©ã¯ã¿ã®ãªãã¯ã©ã¹ãç¶æ¿ããªã
C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ
ã¯ããããééãããããã¯C++åå¿è ã®åéãã
ç¶æ¿ããå¯è½æ§ã®ããã¯ã©ã¹ã«ã¯ãã¹ã¦virtualãã¹ãã©ã¯ã¿ãä½ã
C++では基底クラスにvirtualデストラクタを書こう - *「ふっかつのじゅもんがちがいます。」withぬこ
ã¨ãããã¨ãå¦å®ããã¦ãããã¨ã¯è¨ãããããã«Effective C++ãèªãã§ããã°ããããã¨ã
C++ã§ã¯ãã³ãã¼ä¸å¯ã«ããããã«ä»¥ä¸ã®ãããªã¯ã©ã¹ãæ¸ããããããã
ï¼ã³ãã¼ã³ã³ã¹ãã©ã¯ã¿ã¨ã³ãã¼ä»£å
¥æ¼ç®åãç¡å¹ã«ããï¼
class Uncopyable { protected: Uncopyable() {} ~ Uncopyable() {} private: Uncopyable(const Uncopyable&); Uncopyable& operator=(const Uncopyable&); };
ããããã¯ã©ã¹ã¯ç¶æ¿ã«ä½¿ãããããä»®æ³ãã¹ãã©ã¯ã¿ã宣è¨ãããã¨ã¯ãªãã
ãããã¯ã
class Hoge : private Uncopyable { public: Hoge(int value) : value_(value) {} private: int value_; }; // ããããã¨ã Hoge hoge1(1); Hoge hoge2(hoge1); // ã³ã³ãã¤ã«ã¨ã©ã¼ hoge2 = hoge1; // ã³ã³ãã¤ã«ã¨ã©ã¼ // ã«ãªãã
codepadで実行してみる(コンパイルできないよ版)<-çä¼¼ãã¦ã¿ã
codepadで実行してみる(コンパイルできるよ版)
ãã®ããã«ä½¿ããããã¨ãæ³å®ãã¦ããããã
Uncopyableã¯
空ã®åºåºã¯ã©ã¹ã®æé©åãæå¾
ããããã«ãä»®æ³ãã¹ãã©ã¯ã¿ã§ãªããã¨ãæã¾ããã¯ã©ã¹ãã§
ãã¤ã¾ãããç¶æ¿ããããã¨ãç®çã¨ãã¦ããã¯ã©ã¹ãã§ãã
æ
ã«ã絶対ã«ãã¯è¨ãéãã§ãã
ãããããããã®ãã¨ã¯Effective C++ã«æ¸ãã¦ããã¾ãã
å¤ãã®å ´åãä»®æ³ãã¹ãã©ã¯ã¿ã«é¢ãã¦ã¯ã
- ããªã¢ã«ãã£ãºã ãããããã®åºåºã¯ã©ã¹ã«ã¯ä»®æ³ãã¹ãã©ã¯ã¿ãæãããããç¹ã«ä»®æ³é¢æ°ãæã¤ã¯ã©ã¹ã¯å¿ ãä»®æ³ãã¹ãã©ã¯ã¿ãæããããã
- ç¶æ¿ãç®çã¨ãã¦ããªãã¯ã©ã¹ãã¾ãã¯ç¶æ¿ãç®çã¨ãã¦ãã¦ããããããªã¢ã«ãã£ãºã ãç®çã¨ããªãã®ãªãã°ä»®æ³ãã¹ãã©ã¯ã¿ã宣è¨ãã¹ãã§ã¯ãªãã
ã¨ãªãã¨æãã¾ãã
C++ FAQ.ãã
å®ç¨çã§ç°¡åãã¤æ¶ããããæéãç´¹ä»ãããã
ãããã¯ã©ã¹ãä»®æ³é¢æ°ãæã¤ãªãã°ãä»®æ³ãã¹ãã©ã¯ã¿ãå¿ è¦ã«ãªããããã«å¯¾ãã¦ãã¯ã©ã¹ãå ¨ãä»®æ³é¢æ°ãæããªããªãã°ãã®ã¯ã©ã¹ãåºåºã¯ã©ã¹ã¨ãªãäºå®ã¯ãªãã¨ããè¨è¨ãªã®ã ãããä»®æ³ãã¹ãã©ã¯ã¿ã¯ä¸è¦ã ã
ã¨ããã¾ãã
ããç¶ãã¦
ãã ãããã®æéããã¹ã¦ã®ç°å¢ä¸ã§é©å¿ã§ããã»ã©æ£ç¢ºã§ãªããã¨ã«æ³¨æãããã
æ£ç¢ºãªã«ã¼ã«ã¯æ¶ããã®ãã¨ã¦ãé£ãã代ç©ãªã®ã ã
ã¡ãªã¿ã«ããããããæ£ç¢ºãªã«ã¼ã«ãç´¹ä»ãããã
ãã©ã®ãããªæ´¾çã¯ã©ã¹ï¼ãããã¯ããã¼ã¿ã¡ã³ããã¤ï¼ã¾ãã¯ï¼and/orï¼æ´¾çã¯ã©ã¹ã®åºåºã¯ã©ã¹ããããã¯ãæ´¾çã¯ã©ã¹ã®ãã¼ã¿ã¡ã³ãã®ãã¼ã¿ã¡ã³ãã®åºåºã¯ã©ã¹ããããã¯ãæ´¾çã¯ã©ã¹ã®ãã¼ã¿ã¡ã³ãã®åºåºã¯ã©ã¹ã¨åºåºã¯ã©ã¹ã¨ãã¼ã¿ã¡ã³ãã®å帰çãªçµã¿åãããã¹ã¦ï¼ã¯ãä½ããã®æå³ãæã¤ãã¹ãã©ã¯ã¿ãæã¡ï¼ãããã¯ãæã¤ã ããï¼ãããã¦ãã©ããã«åå¨ããã³ã¼ããåºåºã¯ã©ã¹ã®ãã¤ã³ã¿ã使ã£ã¦æ´¾çã¯ã©ã¹ãåé¤ããå¯è½æ§ããããªãã°ãåºåºã¯ã©ã¹ã®ãã¹ãã©ã¯ã¿ãvirtualã§ããå¿ è¦ãããã
ãªã«ããã£ã¦ãããããããã¼ã¨æãã
è¦ããã«C++ã¯ããã©ãããã¨ãããã¨ã ã
ããããï¼
C++ FAQ 第2ç - C++ããã°ã©ãã³ã°ãããããããã®Q&Aé
- ä½è : ãã¼ã·ã£ã«ã¯ã©ã¤ã³,ãã¤ã¯ã®ã«ã¦,ã°ã¬ãã°ãã¢ã¦,éæ²¢å ¸å
- åºç社/ã¡ã¼ã«ã¼: ãã¢ã½ã³ã¨ãã¥ã±ã¼ã·ã§ã³
- çºå£²æ¥: 2000/05/15
- ã¡ãã£ã¢: åè¡æ¬
- è³¼å ¥: 4人 ã¯ãªãã¯: 56å
- ãã®ååãå«ãããã° (22件) ãè¦ã
Effective C++ åè第3ç (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- ä½è : ã¹ã³ããã»ã¡ã¤ã¤ã¼ãº,å°æå¥ä¸é
- åºç社/ã¡ã¼ã«ã¼: ãã¢ã½ã³ã»ã¨ãã¥ã±ã¼ã·ã§ã³
- çºå£²æ¥: 2006/04/29
- ã¡ãã£ã¢: 大åæ¬
- è³¼å ¥: 23人 ã¯ãªãã¯: 329å
- ãã®ååãå«ãããã° (175件) ãè¦ã