रूल ऑफ थ्री (Rule of Three) C++ में एक अनुभव-आधारित नियम (rule of thumb) है। यह एक अच्छी प्रथा का नियम है जो कहता है कि यदि आपके क्लास को निम्न में से किसी की भी स्पष्ट रूप से आवश्यकता है:
- एक कॉपी कंस्ट्रक्टर,
- एक असाइनमेंट ऑपरेटर,
- या एक डिस्ट्रक्टर,
तो संभवतः उसे तीनों की आवश्यकता होगी।
ऐसा क्यों? क्योंकि यदि आपके क्लास को उपरोक्त में से किसी की आवश्यकता है, तो यह डायनामिकली अलोकेटेड संसाधनों को प्रबंधित कर रहा है और उन संसाधनों को सफलतापूर्वक प्रबंधित करने के लिए अन्य दो की भी आवश्यकता होगी। उदाहरण के लिए, यदि आपको असाइनमेंट ऑपरेटर की आवश्यकता है, तो आप वर्तमान में रेफरेंस द्वारा कॉपी किए जा रहे ऑब्जेक्ट्स की कॉपी बना रहे होंगे, इसलिए संसाधन आवंटित कर रहे होंगे। आपको कॉपी करने के लिए कॉपी कंस्ट्रक्टर और उन संसाधनों को मुक्त करने के लिए डिस्ट्रक्टर की आवश्यकता होगी।