সি ++ এ অপারেটর ওভারলোডিং কীভাবে প্রয়োগ করবেন?

এই নিবন্ধে আমরা আরেকটি অবজেক্ট ওরিয়েন্টেড ধারণাটি দেখব যা অপারেটরকে পরিচালনা সহজ করে তোলে। আমরা সি ++ এ অপারেটর ওভারলোডিং শিখব।

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



সুতরাং, আসুন আমরা সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি দিয়ে শুরু করব।



সি ++ এ ওভারলোডিং

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



লাভ এবং হ্যাকিং এর বিপরীতে

সি ++ এ আমরা ওভারলোড করতে পারি:

  • পদ্ধতি
  • কনস্ট্রাক্টর
  • সূচকযুক্ত বৈশিষ্ট্য

কারণ এই সদস্যদের কেবল পরামিতি রয়েছে।

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।



সি ++ এ ওভারলোডিংয়ের প্রকারগুলি

  • ফাংশন ওভারলোডিং
  • অপারেটর ওভারলোডিং

ওভারলোডিং - সি ++ এ অপারেটর ওভারলোডিং - এডুরেকা

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।

অপারেটর ওভারলোডিং কেন ব্যবহার করা হয়?

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

আমরা কোডটি প্রতিস্থাপন করতে পারি:

গণনা = যোগ (বিভাজন (ক, খ), গুণন (ক, খ))

সমীকরণের জন্য

গণনা = (a / b) + (a * b)

অপারেটর ওভারলোডিং সি ++ এর বেশিরভাগ অপারেটরের জন্য নতুন সংজ্ঞা বিকাশের একটি সহজ এবং সহজ উপায় সরবরাহ করে। পর্যাপ্ত জ্ঞানের সাহায্যে, আমরা প্রায় ফাংশন এবং অপারেটর ওভারলোডিং কৌশলগুলির সৃজনশীল ব্যবহার করে আমাদের নিজস্ব একটি নতুন ভাষা তৈরি করতে পারি। নিম্নলিখিতটি বাদে আমরা সি ++ তে সমস্ত অপারেটরকে ওভারলোড করতে পারি:
Ope স্কোপ অপারেটর (: :)
● আকার অপারেটর (আকারের)
Select সদস্য নির্বাচক (।)
Poin সদস্য পয়েন্টার নির্বাচক (*)
● টেরিনারি অপারেটর (? :)

অপারেটর ওভারলোডিংয়ের সিনট্যাক্স

রিটার্ন_ টাইপ ক্লাসের নাম:: অপারেটর অপ (আর্গুমেন্ট_লিস্ট) {// ফাংশন বডি}

যেখানে রিটার্ন টাইপ হ'ল ফাংশন দ্বারা ফেরত মানের প্রকার। ক্লাসের নাম ক্লাসের নাম।

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।

সি ++ এ অপারেটর ওভারলোডিং কার্যকর করছে

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

অপারেটর ফাংশন এবং সাধারণ ফাংশনগুলির মধ্যে পার্থক্য কী?

অপারেটর ফাংশনগুলি সাধারণ ফাংশনগুলির সমান। পার্থক্যটি হ'ল, অপারেটর ফাংশনের নাম সর্বদা অপারেটর কীওয়ার্ড থাকে যার পরে অপারেটর এবং অপারেটর ফাংশনগুলির প্রতীক অনুসরণ করা হয় যখন সংশ্লিষ্ট অপারেটর ব্যবহার করা হয়।

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।

ওভারলোডিং পদ্ধতির ধরণ

অপারেটর ওভারলোডিং তিনটি পদ্ধতির ব্যবহার করে করা যেতে পারে, তারা হ'ল

  • ওভারলোডিং অ্যানারি অপারেটর।
  • ওভারলোডিং বাইনারি অপারেটর।
  • বন্ধু ফাংশন ব্যবহার করে বাইনারি অপারেটরটি ওভারলোড হচ্ছে।

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।

ওভারলোডিং ইউনারি অপারেটর

আসুন আমরা ইউনারি ‘-‘ অপারেটর বিবেচনা করি। মাইনাস অপারেটর যখন অ্যানারি হিসাবে ব্যবহৃত হয় তখন তার কেবল একটি অপরেন্ড প্রয়োজন requires আমরা জানি যে এই অপারেটরটি যখন কোনও মৌলিক ডেটা ভেরিয়েবলের প্রয়োগ হয় তখন অপারেন্ডের সাইন পরিবর্তন করে। আসুন দেখি কীভাবে এই অপারেটরটিকে ওভারলোড করা যায় যাতে এটি কোনও অবজেক্টে যেমন একই জাতীয় বা ফ্লোট ভেরিয়েবলের ক্ষেত্রে প্রয়োগ হয় তেমনভাবে প্রয়োগ করা যেতে পারে। অ্যানারি বিয়োগ, যখন কোনও বস্তুর জন্য প্রয়োগ করা হয়, এর প্রতিটি তথ্য আইটেম হ্রাস করা উচিত।

উদাহরণ:

# নেমস্পেস স্টাড ক্লাস হাইট ব্যবহার করে অন্তর্ভুক্ত করুন {সর্বজনীন: // সদস্য অবজেক্টস ইনফ ফুট, ইঞ্চি / অবজেক্টের মান উচ্চতা (ইনট এফ, ইনট আই)) ফুট = এঞ্চি ইঞ্চি = আই} // ওভারলোডিং (-) অপারেটর হাইট অবজেক্ট অকার্যকর অপারেটর - () - ফুট - ইঞ্চি - কোট এর হ্রাস // পরিচালনা করুন<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

আউটপুট:

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

সি ++ এ অপারেটর ওভারলোডিং সম্পর্কিত এই নিবন্ধটি নিয়ে চলেছেন।

ওভারলোডিং বাইনারি অপারেটর

এটি দুটি অপারেন্ডে পরিচালিত অপারেটরের একটি ওভারলোডিং। আসুন উচ্চতা শ্রেণীর একই উদাহরণটি নেওয়া যাক তবে এবার দুটি উচ্চতা অবজেক্ট এইচ 1 এবং এইচ 2 যুক্ত করুন।

উদাহরণ:

# নেমস্পেস স্ট্যান্ড ক্লাস হাইট ব্যবহার করে অন্তর্ভুক্ত করুন {পাবলিক: ইনফুট, ইঞ্চি উচ্চতা () {ফুট = 0 ইঞ্চি = 0 ight উচ্চতা (ইনট এফ, ইনট আই) {ফুট = চ ইঞ্চি = i} // ওভারলোডিং (+) অপারেটর সম্পাদন করতে বাইনারি অপারেটর উচ্চতা অপারেটর ব্যবহার করে // দুটি দূরত্বের অবজেক্ট + যোগ করুন + (উচ্চতা ও ডি 2) // রেফারেন্স অনুসারে কল করুন {// উচ্চতা h3 ফেরত দেওয়ার জন্য একটি অবজেক্ট তৈরি করুন // ফুট এবং ইঞ্চি h3.feet = ফুট + d2.feet h3 যোগ করুন। ইঞ্চি = ইঞ্চি + d2.inch // ফলাফল অবজেক্ট h3 Return} int প্রধান () Return উচ্চতা এইচ 1 (3, 7) উচ্চতা h2 (6, 1) উচ্চতা h3 // ওভারলোডেড অপারেটর h3 = h1 + h2 cout ব্যবহার করুন<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

আউটপুট:

ব্যাখ্যা:
উচ্চতা অপারেটর + (উচ্চতা এবং এইচ 2), এখানে ফাংশনের রিটার্ন_প্রকারের শ্রেণি উচ্চতা হয় সুতরাং এটি উচ্চতা শ্রেণীর একটি বস্তু h3 প্রদান করে। এইচ 3 = এইচ 1 + এইচ 2 লাইনে, এইচ 1 তার ক্লাসের অবজেক্টগুলির অপারেটর ফাংশনকে কল করে এবং প্যারামিটার হিসাবে h2 নেয়, তারপরে আমরা h3.feet = ফুট + d2.feet এবং h3.inch = ইঞ্চি + ডি 2 ইঞ্চ প্রয়োগ করি যা স্টোরগুলি সঞ্চয় করে এইচ 3 অবজেক্টের সাথে যুক্ত ভেরিয়েবলের পা এবং ইঞ্চির মানগুলির যোগফল।
যখন 'h3 = h1 + h2' বিবৃতি অপারেটরকে ওভারলোডেড ফাংশনটি আহ্বান করে তখন এইচ 1 বস্তুটি ফাংশনটি আহ্বান করার দায়িত্ব নিয়েছিল এবং এইচ 2 ফাংশনে প্রেরণ হওয়া আর্গুমেন্টের ভূমিকা পালন করে। উপরোক্ত অনুরোধের বিবৃতিটি h3 = h1.operator + (এইচ 2) এর সমতুল্য তাই h2 এর ডেটা সদস্য সরাসরি অ্যাক্সেস করা যায় এবং ড 2 অপারেটর ব্যবহার করে এইচ 2 এর ডেটা সদস্য (এটি একটি আর্গুমেন্ট হিসাবে পাস হয়) অ্যাক্সেস করা হয়।

অপারেটর ওভারলোডিংয়ের নিয়ম

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

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

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