যদি তুচ্ছ ডিফল্ট কনস্ট্রাক্টর কোনও পদক্ষেপ না নেয় তবে আমরা কেন মলোক ব্যবহার করে তুচ্ছ গঠনমূলক অবজেক্ট তৈরি করতে পারি না?


14

তুচ্ছ ডিফল্ট নির্মাতা সম্পর্কে cppreferences থেকে উদ্ধৃত নিম্নলিখিত অনুচ্ছেদ বুঝতে আমার অসুবিধা হয়েছে । আমি স্ট্যাকওভারফ্লো অনুসন্ধান করেছি কিন্তু এখনও একটি পরিষ্কার উত্তর পাইনি। সুতরাং সাহায্য করুন।

তুচ্ছ ডিফল্ট কনস্ট্রাক্টর এমন কনস্ট্রাক্টর যা কোনও ক্রিয়া করে না। সি ভাষার সাথে উপযুক্ত সমস্ত ডেটা টাইপ (পিওডি টাইপ) তুচ্ছভাবে ডিফল্ট-গঠনমূলক। সি এর বিপরীতে, তুচ্ছ ডিফল্ট কনস্ট্রাক্টরগুলির সাথে উপযুক্তভাবে সাজানো স্টোরেজগুলির পুনরায় ব্যাখ্যা করে যেমন স্ট্রাইড: ম্যালোকের সাথে বরাদ্দকৃত মেমরি: প্লেসমেন্ট-নতুন প্রয়োজন হয় আনুষ্ঠানিকভাবে একটি নতুন অবজেক্টকে প্রবর্তন করা এবং সম্ভাব্য অপরিজ্ঞাত আচরণ এড়ানো প্রয়োজন cannot

বিশেষত, যদি তুচ্ছ ডিফল্ট কনস্ট্রাক্টর কিছুই না করে তবে আমরা কেন স্টোরেজটির পুনরায় ব্যাখ্যা করতে পারি না এবং প্রদত্ত প্রকারের সাথে কোনও বস্তু রয়েছে তা ভান করতে পারি না কেন? আপনি দয়া করে এর ফলে তৈরি হওয়ার সম্ভাব্য অপরিবর্তিত আচরণের জন্য কিছু উদাহরণ সরবরাহ করতে পারেন?


সংকলকটির সর্বাধিক গুরুত্বপূর্ণ কাজটি উত্স কোডটি সংকলন না করে সম্ভবত অবৈধ কোড প্রত্যাখ্যান করা। আপনি ম্যালোক () ব্যবহার করার সময় এটি এটি করতে পারে না।
হ্যানস প্যাস্যান্ট

6
কারণগুলি খুব সাধারণ। প্রোগ্রামারটির জন্য পাগল কাজ করার জন্য যত কম সুযোগ রয়েছে, কম্পাইলারের জন্য পাগল জিনিস করার জন্য আরও বেশি সুযোগ রয়েছে (আগ্রাসী আশাবাদী)।
এন। 'সর্বনাম' মি।

1
একই কারণে যে আপনি ঠিক করতে পারবেন না *reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;। সি ++ এর অবজেক্ট মেশিনে নির্দিষ্ট করা অবজেক্টস এবং অবজেক্ট লাইফটাইমগুলির ধারণা রয়েছে এবং কেবল স্টোরেজ থেকে কোনও অবজেক্ট তৈরি করার জন্য কোনও সিপিইউ নির্দেশনা থাকার অর্থ এই নয় যে বিমূর্ত মেশিনে কোনও পার্থক্য নেই।
ম্যাক্স ল্যাংফোফ

1
@ হ্যান্সপাস্যান্ট এমন একটি সংকলক যা সমস্ত কোড প্রত্যাখ্যান করে সমস্ত অবৈধ কোড প্রত্যাখ্যান করে। যাইহোক, যেসব প্রোগ্রামের ইউবি রয়েছে তা প্রত্যাখ্যান করা কপিলারের কাজ নয়।
এন। 'সর্বনাম' মি।

উত্তর:


7

P0593R5 এই উদাহরণ দেয়:

struct X { int a, b; };
X *make_x() {
  X *p = (X*)malloc(sizeof(struct X));
  p->a = 1;
  p->b = 2;
  return p;
}

এবং ব্যাখ্যা:

সি ++ কম্পাইলারের সাথে সংকলিত হয়ে গেলে, এই কোডটির আচরণের পূর্বনির্ধারিত আচরণ রয়েছে, কারণ p-> কোনও এক্স অবজেক্টের কোনও ইন্ট সাবোবজেক্টে লেখার চেষ্টা করা হয়েছে এবং এই প্রোগ্রামটি কখনও এক্স এক্স অবজেক্ট বা কোনও ইনট সাবজেক্ট তৈরি করে নি।

পি [ইন্ট্রো.ওবজেক্ট] পি 1,

কোনও বস্তু একটি সংজ্ঞা দ্বারা তৈরি করা হয়, একটি নতুন-এক্সপ্রেশন দ্বারা, স্পষ্টভাবে কোনও ইউনিয়নের সক্রিয় সদস্য পরিবর্তন করার সময়, বা যখন একটি অস্থায়ী বস্তু তৈরি হয়।

... এবং এই প্রোগ্রামটি এগুলির কোনও কিছুই করেনি।

বাস্তবে এটি কাজ করে এবং ইউবির পরিস্থিতি অন্য যে কোনও কিছুর চেয়ে মান হিসাবে ত্রুটি হিসাবে বিবেচিত হয়। কাগজটির পুরো উদ্দেশ্য হ'ল অন্যান্য বিষয় না ভাঙিয়া সেই সমস্যা এবং অনুরূপ কেসগুলি সমাধানের জন্য একটি উপায় প্রস্তাব করা।


1

"বিশুদ্ধতা" কারণে।

বিকল্প এবং প্রকৃত স্থিতিস্থাপকতা হ'ল স্টোরেজের প্রতিটি অঞ্চলে একই সময়ে সেই স্টোরেজটিতে থাকা সমস্ত বস্তু থাকবে। কিছু কমিটির সদস্য স্থিতিশীলতা নিয়ে অসন্তুষ্ট এবং অনেক লোক একই জায়গায় অসীম বহু বস্তু থাকার বিষয়টি (ভার্চুয়াল, অবিচ্ছিন্ন অবস্থায়) ভেবে ভয় পেয়েছিল।

স্টোরেজ অঞ্চলে অসীম বহু বস্তু থাকা নিয়ে কেউ যুক্তিযুক্ত সমস্যাটি দেখাতে সক্ষম হয় নি।

যেহেতু তাদের স্ট্যান্ডার্ডের বিপরীতমুখী বলার স্ট্যান্ডার্ডের বিভিন্ন বিভাগ ছিল, তাই কমিটির সদস্যরা কেবলমাত্র মানের সবচেয়ে খারাপ দিকটিকে গুরুত্বের সাথে বিবেচনা করার সিদ্ধান্ত নিয়েছেন।

এছাড়াও, স্ট্রিং আক্ষরিক ব্যবহারের কঠোরভাবে অনুমোদিত নয়, যদি আপনি সত্যিই গুরুত্বের সাথে বিবেচনা করেন তবে এটি স্ট্যান্ডার্ডের একটি অংশ।


স্ট্রিং লিটারাল ব্যবহারের ক্ষেত্রে কৃতিত্বের সাথে কঠোরভাবে অনুমোদিত নয়type_infoঅবজেক্ট সম্পর্কে একই রকম সিডব্লুজি ইস্যু রয়েছে । আপনি 'আউট স্ট্রিং আক্ষরিক রিপোর্ট করেছেন?
ভাষা আইনজীবী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.