সি ++ এ কপিরাইট কনস্ট্রাক্টর কীভাবে প্রয়োগ করবেন?



কনস্ট্রাক্টর্স বোঝার জন্য অনেকেরই একটি ছদ্মবেশ ছিল। এই নিবন্ধটি আপনাকে সি ++ এ অনুলিপি নির্মাণকারীর ধারণাটিকে অনিষ্ট করতে সহায়তা করবে

বোঝা নির্মাতারা অনেকের জন্য একটি রহস্য হয়েছে। এই নিবন্ধটি আপনাকে সি ++ এ অনুলিপি নির্মাণকারীর ধারণাটিকে অনিষ্ট করতে সহায়তা করবে। নিম্নলিখিত পয়েন্টারগুলি এই নিবন্ধে কভার করা হবে,

সুতরাং আসুন শুরু করা যাকসি ++ এ কপিরাইট কনস্ট্রাক্টর উপর এই নিবন্ধটি সহ





কপি কন্সট্রাক্টর এমন একটি কনস্ট্রাক্টর যা একই শ্রেণীর অন্য একটি অবজেক্ট ব্যবহার করে কোনও শ্রেণীর অবজেক্টকে সূচনা করে।

বাক্য গঠন:



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

এখানে একটি উদাহরণ কোড দেওয়া আছে :

# নেমস্পেস স্ট্যান্ড ক্লাস টেস্ট ব্যবহার করে অন্তর্ভুক্ত করুন {ব্যক্তিগত: ইনট এক্স পাবলিক: টেস্ট (ইন্ট x1) {x = x1} পরীক্ষা (কনস্ট টেস্ট এবং টি 2) {x = t2.x} ইন্ট গেটএক্স () {রিটার্ন x}} ইনট মেন () t টেস্ট টি 1 (7) // সাধারণ কনস্ট্রাক্টরকে এখানে টেস্ট বলা হয় t2 = t1 // কপিরাইট কনস্ট্রাক্টরকে এখানে cout বলা হয়<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

আউটপুট:



সি ++ - এডুরেকাতে আউটপুট-অনুলিপি নির্মাণকারী

ব্যাখ্যা

উপরোক্ত প্রোগ্রামটি একটি অনুলিপি নির্মাণকারীর প্রাথমিক ডেমো mo আমাদের ক্লাস টেস্ট আছে, টাইপ এর প্রাইভেট ডেটা মেম্বার সহ x বলে। তারপরে আমাদের কাছে একটি প্যারামিটারাইজড কনস্ট্রাক্টর রয়েছে, যা ভ্যারিয়েবল এক্সকে 7 প্রদান করে। আমাদের কাছে একটি অনুলিপি নির্মাণকারী রয়েছে, যা টি 1 এর মান দিয়ে টি 2 এর মান ইনস্ট্যান্ট করে। টি 2 এর ঠিকানা পাঠানো হয় যা টি 1 এর মান ধারণ করে এবং এক্সকে নির্ধারিত হয়। একটি get ফাংশন রয়েছে যা x এর মান প্রদান করে।

মূল ফাংশনে টি 1 নামে শ্রেণি পরীক্ষার একটি অবজেক্ট রয়েছে। এই অবজেক্টের সাথে একটি মান যুক্ত রয়েছে, এটি প্যারামিটার। মূল ফাংশনে ক্লাস টেস্টের আরেকটি অবজেক্ট রয়েছে যার নাম টি 2। এটি টি 1 ভেরিয়েবল ব্যবহার করে আরম্ভ করা হয় এবং অনুলিপি নির্মাণকারীকে এখানে ডাকা হয়। অবশেষে, এক্স এর মান পেতে t1 এবং t2 এর সাথে সম্মত হয়ে get ফাংশনটি ডাকা হয়।

প্রকার

কপি কনস্ট্রাক্টর দুটি ধরণের আছে।
⦁ অগভীর অনুলিপি নির্মাণকারী
⦁ গভীর অনুলিপি নির্মাণকারী

সি ++ তে কপির কন্সট্রাক্টর এই নিবন্ধটি নিয়ে চলছে

অগভীর অনুলিপি নির্মাণকারী:

একটি অগভীর অনুলিপি নির্মাণকারী একটি ডিফল্ট অনুলিপি নির্মাণকারী Const

উদাহরণ:

দুটি ব্যক্তি একই সাথে একটি ডাটাবেস অ্যাক্সেস করে এবং দুটি ভিন্ন সিস্টেমে মানগুলিতে পরিবর্তন করে make তারা যদি ডাটাবেসে পরিবর্তন করে থাকে তবে এই দুটি পরিবর্তনই ডাটাবেসে প্রদর্শিত হবে। উভয় বস্তু একই মেমরি অবস্থানের দিকে নির্দেশ করবে। এটি অগভীর কপি নির্মাণকারী। এটি বেশিরভাগ ক্ষেত্রে ঘটে যখন আমরা ডিফল্ট অনুলিপি নির্মাণকারীর সাথে কাজ করি। এখানে একটি উদাহরণ কোড রয়েছে: অগভীর অনুলিপি নির্মাণকারী:

# নেমস্পেস স্ট্যান্ড ক্লাস টেস্ট ব্যবহার করে অন্তর্ভুক্ত করুন {পাবলিক: ইনট y, জেড টেস্ট (ইন্টি ওয়াই 1, ইন্ট জেড 1) {y = y1 z = z1}} মেইন () {টেস্ট এ (7,13) কোট<<'the sum is: '<< a.y+a.z return 1 } 

আউটপুট:

প্রকল্প ক্রয় পরিচালন কি

ব্যাখ্যা:

উপরের কোডে, আমরা সংকলক দ্বারা সরবরাহিত একটি ডিফল্ট অনুলিপি নির্মাণকারীর ব্যবহার করি। সুতরাং এটি একটি অগভীর অনুলিপি নির্মাণকারী।

সি ++ তে কপির কন্সট্রাক্টর এই নিবন্ধটি নিয়ে চলছে

গভীর অনুলিপি নির্মাণকারী

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

এখানে একটি উদাহরণ কোড রয়েছে: ডিপ কপি নির্মাণকারী:

# নেমস্পেস স্ট্যান্ড ক্লাস টেস্ট ব্যবহার করে অন্তর্ভুক্ত করুন {ব্যক্তিগত: ইনট এক্স পাবলিক: টেস্ট (ইন্ট x1) {x = x1} পরীক্ষা (কনস্ট টেস্ট এবং টি 2) {x = t2.x} ইন্ট গেটএক্স () {রিটার্ন x}} ইনট মেন () t টেস্ট টি 1 (7) // সাধারণ কনস্ট্রাক্টরকে এখানে টেস্ট বলা হয় t2 = t1 // কপিরাইট কনস্ট্রাক্টরকে এখানে cout বলা হয়<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

আউটপুট:

ব্যাখ্যা

এটি একই কোড যা আমরা উপরে ব্যবহার করেছি অনুরূপ আউটপুট দিচ্ছি। এটি কোনও ব্যবহারকারী সংজ্ঞায়িত কপির কনস্ট্রাক্টর এবং অতএব এটি একটি ডিপ কপি নির্মাণকারী Copy

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

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।