C ++ শ্রেণীর কনস্ট্রাক্টর

C Class Constructors



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

এই নিবন্ধে, আমরা উদাহরণ সহ এই সমস্ত ধরণের নির্মাতাদের নিয়ে আলোচনা করব।







উদাহরণ 1

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



পূর্ণসংখ্যা()

{

এক্স=পঞ্চাশ;

এবং=বিশ;

};

এই কনস্ট্রাক্টরে, ভেরিয়েবলের জন্য মান নির্ধারিত হয়। আমরা যদি আউটপুট হিসাবে মানগুলি আনতে চাই, আমাদের সেগুলি মূল প্রোগ্রামে মুদ্রণ করতে হবে।







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

আমরা উবুন্টুর টার্মিনাল থেকে সোর্স কোডের আউটপুট দেখতে পারি। আউটপুট পাওয়ার জন্য ব্যবহৃত পদ্ধতিটি বেশ সহজ। প্রথমে কোডটি কম্পাইল করা হয়, এবং তারপর এটি কার্যকর করা হয়। আমরা সংকলন প্রক্রিয়ার জন্য G ++ কম্পাইলার ব্যবহার করি। ঠিক যেমন C এর ক্ষেত্রে আমরা GCC ব্যবহার করি।



$ জি++ -অথবা filec filec।

/filec

-O ফাইলের আউটপুট সংরক্ষণ করতে ব্যবহৃত হয়।

উদাহরণ 2

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

  • এটি কন্সট্রাকটরের ভিতরে বিভিন্ন ভেরিয়েবলকে আরম্ভ করার জন্য ব্যবহার করা হয় যখন এটি আরম্ভ করা হয়।
  • এটি কনস্ট্রাক্টর ওভারলোডিংয়ে ব্যবহৃত হয়। এটি নিবন্ধে পরে সংজ্ঞায়িত করা হয়েছে।

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

পূর্ণসংখ্যা( intএক্স,intএবং)

{

প্রতি=এক্স;

=এবং;

};

পূর্ববর্তী উদাহরণে, কনস্ট্রাক্টরের ভিতরের ভেরিয়েবলগুলিকে মান দেওয়া হয়েছিল। যদিও এই কনস্ট্রাক্টরে, ভেরিয়েবলগুলি ভেরিয়েবলের সাথে মান দেওয়া হয়।

যদি আমরা ডিসপ্লে নিতে চাই, আমাদের এমন একটি ফাংশন সংজ্ঞায়িত করতে হবে যা মান ফিরিয়ে দেবে কারণ কন্সট্রাকটর থেকে সরাসরি সেই প্রাথমিক ভেরিয়েবল অ্যাক্সেস করা সম্ভব নয়।

intgetX()

{

প্রত্যাবর্তনপ্রতি;

};

এখন আমরা প্রোগ্রামের মূল অংশটি দেখব। এখানে যখন বস্তুটি তৈরি হয়, আপনি পরামিতি বিভাগে মান দেখতে পারেন।

পূর্ণসংখ্যা v(70,55); {অন্তর্নিহিত}

পূর্ণসংখ্যা v=পূর্ণসংখ্যা(10,পনের); {স্পষ্ট}

এবং ফলাফল প্রদর্শন করার জন্য, আমরা বস্তুর ব্যবহার করে ক্লাসের ভিতরে তৈরি ফাংশনগুলিকে কল করব। যেমন v.getx ()।

রেকর্ড আনার পদ্ধতি আগের মতোই চালু।

উদাহরণ 3

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

প্রাচীর(প্রাচীর&obj)

{

দৈর্ঘ্য=objদৈর্ঘ্য;

উচ্চতা=objউচ্চতা;

}

আমাদের এলাকা গণনা করতে হবে, তাই এই গণনার ফাংশন এখানে সংজ্ঞায়িত করা হয়েছে। এটি মূল ফাংশনে মান ফিরিয়ে দেবে যখন এটি বলা হয়। এখন আমরা কোডের মূল প্রোগ্রাম পর্যবেক্ষণ করব

কপি করা কনস্ট্রাক্টরের ফাংশন কল এইরকম হবে।

প্রাচীর প্রাচীর 2=প্রাচীর 1;

অবজেক্টটি কপি করা কনস্ট্রাক্টরকে কল করে, এবং প্রথম বস্তুর মাধ্যমে ডেটা এর মাধ্যমে কপি করা হয়। উপরন্তু, আমরা উভয় বস্তুর মাধ্যমে এলাকা গণনা করার জন্য ফাংশনটি কল করব।

আউটপুট থেকে, আপনি দেখতে পারেন যে উভয় কনস্ট্রাক্টর থেকে ফলাফল একই। এর অর্থ হল পুরো ডেটা অবজেক্ট দ্বারা সফলভাবে কপি করা হয়েছে।

উদাহরণ 4

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

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

// দুই যুক্তি দিয়ে কনস্ট্রাক্টর

আকৃতি(intএক্স,intএবং)

{

প্রতি=এক্স;

=এবং;

};

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

আকার;

আকৃতি s2(8);

আকৃতি s3(4,2);

যে ফাংশনের মাধ্যমে আমরা মান প্রদর্শন করতে পারি তাকে একই বস্তুর মাধ্যমে বলা হয়।

আউটপুট দেখার জন্য, আমরা একই কমান্ড টার্মিনাল পদ্ধতি ব্যবহার করব ফাইলে উপস্থিত কোড কম্পাইল এবং এক্সিকিউট করে।

আউটপুট থেকে, আমরা দেখতে পারি যে প্রতিটি কনস্ট্রাক্টরের জন্য উত্তর একই।

উপসংহার

এই টিউটোরিয়ালে, আমরা কন্সট্রাকটরদের বুনিয়াদি এবং তাদের কার্যকারিতা দেখেছি, কিভাবে ওভারলোড করতে হয়। মানগুলির সাথে ভেরিয়েবলগুলি আরম্ভ করার জন্য কনস্ট্রাক্টর ব্যবহার করা হয়।