खोज…


परिचय

इनलाइन चर को एक परिभाषा नियम का उल्लंघन किए बिना कई अनुवाद इकाइयों में परिभाषित करने की अनुमति है। यदि इसे बहुतायत से परिभाषित किया गया है, तो लिंकर अंतिम कार्यक्रम में सभी परिभाषाओं को एक ही वस्तु में मिला देगा।

कक्षा की परिभाषा में एक स्थिर डेटा सदस्य को परिभाषित करना

यदि यह inline घोषित किया जाता है, तो कक्षा का एक स्थिर डेटा सदस्य पूरी तरह से वर्ग परिभाषा के भीतर परिभाषित किया जा सकता है। उदाहरण के लिए, निम्न वर्ग को हेडर में परिभाषित किया जा सकता है। C ++ 17 से पहले, Foo::num_instances की परिभाषा को समाहित करने के लिए .cpp फ़ाइल प्रदान करना आवश्यक होता है Foo::num_instances ताकि यह केवल एक बार परिभाषित हो, लेकिन C ++ 17 में इनलाइन चर Foo::num_instances की कई परिभाषाएँ Foo::num_instances सभी एक ही int ऑब्जेक्ट को संदर्भित करते हैं।

// warning: not thread-safe...
class Foo {
  public:
    Foo() { ++num_instances; }
    ~Foo() { --num_instances; }
    inline static int num_instances = 0;
};

एक विशेष मामले के रूप में, एक constexpr स्थिर डेटा सदस्य परोक्ष इनलाइन है।

class MyString {
  public:
    MyString() { /* ... */ }
    // ...
    static constexpr int max_size = INT_MAX / 2;
};
// in C++14, this definition was required in a single translation unit:
// constexpr int MyString::max_size;


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow