#include<iostream>
using namespace std;
class Test
{
public:
Test(){}
Test(int param):i(param){}
int i;
};
int main()
{
Test obj1(100);
//Test obj2[100](obj1) ; - This doesn't work I know
Test obj3[10] = obj1; //This works
cout<<obj3[9].i<<endl;
return 1;
}
ऊपर कोड Test obj2[100](obj1);
में काम नहीं करता है, लेकिन Test obj3[10] = obj1;
बुरा सरणी प्रारंभ बनाम काम प्रतिलिपि निर्माता प्रारंभ
पूर्व समर्थित लेकिन बाद क्यों है। (दोनों प्रतिलिपि निर्माता बुला लिया जाएगा।)
क्या यह है कि पूर्व में कंपेलरों में कार्यान्वयन बाधाओं के कारण समर्थित नहीं है?
संपादित करें: मैं C++ 11 का उपयोग नहीं कर रहा हूं। जीसीसी संस्करण 4.8.2 (i686-POSIX-बौना-Rev3, MinGW-W64 परियोजना द्वारा निर्मित) क्यूटी 5.3.1
किसी भी निष्कर्ष?
यह काम नहीं करता है क्योंकि इसकी अनुमति नहीं है। '()' मान-प्रारंभिकता है जब तक कि यह एक सरणी न हो, तब कार्यक्रम खराब हो गया है। –
@Puppy शब्दों को कम नहीं करें; हमें बताएं कि आप वास्तव में देशी सरणी के बारे में कैसा महसूस करते हैं = पी – WhozCraig
'परीक्षण obj3 [10] = obj1; // यह काम करता है - वास्तव में? मोड (सी ++ 11 या अन्यथा) के बावजूद इस पर 3.5 चट्टानों को झुकाएं। – WhozCraig