तो मूल रूप से इस कोड:रूपांतरण निर्माता के बजाय कॉपी कन्स्ट्रक्टर क्यों कहा जाता है?
class A {
};
class B {
B (const B& b) {}
public:
B(){}
B (const A& a) {}
};
int main()
{
A a;
B b1(a); //OK
B b2 = a; //Error
}
केवल B b2 = a
के लिए एक त्रुटि उत्पन्न करता है। और उस त्रुटि है
error: ‘B::B(const B&)’ is private
क्यों यह प्रत्यक्ष रूपांतरण निर्माता के अलावा प्रति निर्माता कॉल करने के लिए प्रयास कर रहा है?
यह त्रुटि संदेश एक अस्थायी B
बनाई गई है जो तब कॉपी-निर्माण के लिए प्रयोग किया जाता है, लेकिन क्यों से स्पष्ट है? मानक में यह कहां है?
है आपका प्रश्न, किसी भी मौके से, [यह एक] से संबंधित है (http://stackoverflow.com/questions/11221242/is-this-a-copy-constructor)? :) –
@EitanT आप कैसे जानते थे? –
क्योंकि मैंने कुछ मिनट पहले उस प्रश्न की समीक्षा की है :) –