আমি সি ++ এ অপারেটর ওভারলোডিং সম্পর্কে শিখছি, এবং আমি এটি দেখতে পাচ্ছি ==
এবং !=
কেবল এমন কিছু বিশেষ ফাংশন যা ব্যবহারকারী-সংজ্ঞায়িত ধরণের জন্য অনুকূলিতকরণ করা যায়। আমার উদ্বেগ, যদিও, কেন দুটি পৃথক সংজ্ঞা প্রয়োজন? আমি ভেবেছিলাম যে যদি a == b
এটি সত্য হয় তবে a != b
তা স্বয়ংক্রিয়ভাবে মিথ্যা এবং তদ্বিপরীত, এবং অন্য কোনও সম্ভাবনা নেই, কারণ, সংজ্ঞা অনুসারে, a != b
এটি !(a == b)
। এবং আমি এমন কোনও পরিস্থিতি কল্পনা করতে পারি না যেখানে এটি সত্য ছিল না। তবে সম্ভবত আমার কল্পনাশক্তি সীমাবদ্ধ বা আমি কিছু সম্পর্কে অজ্ঞ?
আমি জানি যে আমি একজনের সাথে অন্যের দিক দিয়ে সংজ্ঞা দিতে পারি, তবে এটি আমি জিজ্ঞাসা করছি না। আমি মান বা পরিচয় দ্বারা বস্তুর তুলনা মধ্যে পার্থক্য সম্পর্কে জিজ্ঞাসা করছি না। অথবা একই সাথে দুটি বস্তু সমান এবং সমান হতে পারে কিনা (এটি অবশ্যই কোনও বিকল্প নয়! এই বিষয়গুলি পারস্পরিক একচেটিয়া)। আমি যা সম্পর্কে জিজ্ঞাসা করছি তা হ'ল:
এমন কোনও পরিস্থিতি কি সম্ভব যার মধ্যে দুটি বস্তু সমান হওয়ার বিষয়ে প্রশ্ন জিজ্ঞাসা করা অর্থবোধ করে, কিন্তু সেগুলি সমান না হওয়ার বিষয়ে জিজ্ঞাসা করা কোনও অর্থবোধ করে না? (হয় ব্যবহারকারীর দৃষ্টিকোণ, বা প্রয়োগকারী এর দৃষ্টিকোণ থেকে)
যদি এরকম কোনও সম্ভাবনা না থাকে, তবে কেন পৃথিবীতে সি ++ এই দুটি অপারেটরকে দুটি স্বতন্ত্র ফাংশন হিসাবে সংজ্ঞায়িত করা হচ্ছে?
'undefined' != expression
সর্বদা সত্য (বা মিথ্যা, বা অপরিজ্ঞাত), অভিব্যক্তিটির মূল্যায়ন করা যায় কিনা তা নির্বিশেষে। এই ক্ষেত্রে a!=b
সংজ্ঞা অনুযায়ী সঠিক ফলাফলের ফিরে আসবে, কিন্তু !(a==b)
যদি ব্যর্থ হবে b
মূল্যায়ন করা যাবে না। (অথবা মূল্যায়ন b
ব্যয়বহুল হলে অনেক সময় নিন )।
(NaN != NaN) == true