যদি আপনার অ্যাপ্লিকেশনটি গতিসম্পন্ন হয় তবে আমি [] অপারেটরটি ব্যবহারের পরামর্শ দেব কারণ এটি মূল অবজেক্টের মোট 3 টি অনুলিপি তৈরি করে যার মধ্যে 2 অস্থায়ী বস্তু এবং যত তাড়াতাড়ি বা পরে ধ্বংস হয়ে গেছে।
তবে সন্নিবেশ () এ, মূল অবজেক্টের 4 টি অনুলিপি তৈরি করা হয়েছে যার মধ্যে 3 অস্থায়ী বস্তু (অগত্যা "অস্থায়ী" নয়) এবং ধ্বংস হয়।
যার জন্য অতিরিক্ত সময় অর্থ: ১. একটি বস্তুর মেমরি বরাদ্দ ২. একটি অতিরিক্ত কন্সট্রাক্টর কল ৩. একটি অতিরিক্ত ডেস্ট্রাক্টর কল ৪. একটি বস্তুর মেমরি ক্ষয়
যদি আপনার অবজেক্টগুলি বড় হয় তবে কনস্ট্রাক্টরগুলি সাধারণ, ডেস্ট্রাক্টররা প্রচুর রিসোর্স ফ্রিজ করে, উপরের পয়েন্টগুলি আরও বেশি গণনা করে। পঠনযোগ্যতা সম্পর্কে, আমি মনে করি উভয়ই যথেষ্ট ন্যায্য।
একই প্রশ্ন আমার মনে আসল তবে পড়ার যোগ্যতা নয় গতিতে। এখানে একটি নমুনা কোড দেওয়া হয়েছে যার মাধ্যমে আমি যে পয়েন্টটি উল্লেখ করেছি তা সম্পর্কে জানতে পেরেছি।
class Sample
{
static int _noOfObjects;
int _objectNo;
public:
Sample() :
_objectNo( _noOfObjects++ )
{
std::cout<<"Inside default constructor of object "<<_objectNo<<std::endl;
}
Sample( const Sample& sample) :
_objectNo( _noOfObjects++ )
{
std::cout<<"Inside copy constructor of object "<<_objectNo<<std::endl;
}
~Sample()
{
std::cout<<"Destroying object "<<_objectNo<<std::endl;
}
};
int Sample::_noOfObjects = 0;
int main(int argc, char* argv[])
{
Sample sample;
std::map<int,Sample> map;
map.insert( std::make_pair<int,Sample>( 1, sample) );
//map[1] = sample;
return 0;
}