পয়েন্টারগুলির ওপরে উল্লেখগুলির সবচেয়ে বড় সুবিধা হ'ল বৃহত্তর সরলতা এবং পঠনযোগ্যতা। সর্বদা হিসাবে যখন আপনি কোনও বিষয় সহজ করেন তবে আপনি স্বাচ্ছন্দ্য এবং নিয়ন্ত্রণের ব্যয়ে স্বল্প-স্তরের জিনিসগুলি পান (যেমন অন্যান্য লোকেরা উল্লেখ করেছেন)।
পয়েন্টারগুলি প্রায়শই 'কুশ্রী' বলে সমালোচিত হয়।
class* myClass = new class();
এখন যতবার আপনি এটি ব্যবহার করেন আপনাকে প্রথমে হয় সেটিকে প্রথমে dereferences করতে হবে
myClass->Method() or (*myClass).Method()
কিছু পাঠযোগ্যতা হারাতে এবং জটিলতা সত্ত্বেও, লোকেরা এখনও পয়েন্টারগুলি প্রায়শই প্যারামিটার হিসাবে ব্যবহার করার প্রয়োজন ছিল যাতে আপনি প্রকৃত বস্তুটি (মান অনুসারে পরিবর্তনের পরিবর্তে) পরিবর্তন করতে পারেন এবং বিশাল বস্তু অনুলিপি না করার কর্মক্ষমতা অর্জনের জন্য।
আমার কাছে এই কারণেই পয়েন্টারগুলির মতো একই সুবিধা প্রদানের জন্য পয়েন্টারগুলির বিন্যাস ছাড়াই প্রথম স্থানে রেফারেন্সগুলি 'জন্মগ্রহণ' হয়েছিল। এখন আপনি আসল বস্তুটি (কেবল এটির মান নয়) পাস করতে পারেন এবং আপনার সাথে অবজেক্টের সাথে ইন্টারঅ্যাক্ট করার আরও একটি সহজ পাঠযোগ্য এবং সাধারণ উপায় রয়েছে।
MyMethod(&type parameter)
{
parameter.DoThis()
parameter.DoThat()
}
সি ++ জাভা রেফারেন্সগুলি সি # / জাভা রেফারেন্সের থেকে পৃথক হয়েছে যে একবার আপনি যখন এটির জন্য কোনও মান নির্ধারণ করেন, আপনি এটি পুনরায় বরাদ্দ করতে পারবেন না (এবং এটি ঘোষণার পরে এটি নির্ধারণ করতে হবে)। এটি কনস্ট পয়েন্টার (পয়েন্টার যা অন্য কোনও বস্তুর কাছে পুনরায় নির্দেশ করতে পারে না) ব্যবহার করার মতোই ছিল।
জাভা এবং সি # খুব উচ্চ স্তরের, আধুনিক ভাষাগুলি যা বহু বছর ধরে সি / সি ++ তে জমে থাকা অনেকগুলি আবছা পরিষ্কার করেছিল এবং পয়েন্টারগুলি অবশ্যই পরিষ্কার করার দরকার ছিল of
পয়েন্টার জানার বিষয়ে আপনার মন্তব্য আপনাকে আরও শক্তিশালী প্রোগ্রামার হিসাবে পরিণত করে, বেশিরভাগ ক্ষেত্রেই এটি সত্য। আপনি যদি জানেন যে 'কীভাবে' কোনও কিছু কাজ না করে কেবল এটির ব্যবহারের বিরোধিতা হিসাবে কাজ করে আমি বলব এটি প্রায়শই আপনাকে একটি ধার দিতে পারে। একটি প্রান্তের পরিমাণ সর্বদা পরিবর্তিত হবে। সর্বোপরি, কীভাবে এটি প্রয়োগ করা হয় তা না জেনে কিছু ব্যবহার করা ওওপি এবং ইন্টারফেসের অন্যতম সৌন্দর্য।
এই নির্দিষ্ট উদাহরণে, পয়েন্টারগুলি সম্পর্কে জেনে রাখা আপনাকে রেফারেন্সগুলিতে কীভাবে সহায়তা করবে? বুঝতে পারছি যে একটি সি # রেফারেন্সটি নিজেই বস্তু নয় বরং অবজেক্টের দিকে নির্দেশ করে একটি খুব গুরুত্বপূর্ণ ধারণা।
# 1: আপনি মান দ্বারা উত্তরণ করছেন না আপনি
যখন পয়েন্টার ব্যবহার করেন আপনি জানেন যে পয়েন্টারটি কেবল একটি ঠিকানা রাখে, এটি। পরিবর্তনশীল নিজেই প্রায় খালি এবং এজন্য যুক্তি হিসাবে পাস করা খুব সুন্দর। পারফরম্যান্স লাভের পাশাপাশি আপনি প্রকৃত অবজেক্টের সাথে কাজ করছেন যাতে আপনার যে কোনও পরিবর্তন অস্থায়ী হয় না
# 2: পলিমারফিজম / ইন্টারফেস
যখন আপনার একটি রেফারেন্স থাকে যা একটি ইন্টারফেস টাইপ এবং এটি কোনও অবজেক্টের দিকে নির্দেশ করে, আপনি কেবলমাত্র সেই ইন্টারফেসের পদ্ধতিগুলিকে কল করতে পারেন যদিও বস্তুর আরও অনেক ক্ষমতা থাকতে পারে। বস্তুগুলিও একই পদ্ধতিগুলি ভিন্নভাবে প্রয়োগ করতে পারে।
আপনি যদি এই ধারণাগুলি ভালভাবে বুঝতে পারেন তবে আমি মনে করি না যে আপনি পয়েন্টার ব্যবহার না করে খুব বেশি মিস করছেন। সি ++ প্রোগ্রামিং শেখার জন্য প্রায়শই ভাষা হিসাবে ব্যবহৃত হয় কারণ আপনার হাতটি মাঝে মাঝে ময়লা করা ভাল। এছাড়াও, নিম্ন-স্তরের দিকগুলির সাথে কাজ করা আপনাকে একটি আধুনিক ভাষার স্বাচ্ছন্দ্যের প্রশংসা করে তোলে। আমি সি ++ দিয়ে শুরু করেছি এবং এখন আমি একজন সি # প্রোগ্রামার এবং আমার মনে হয় কাঁচা পয়েন্টারগুলির সাথে কাজ করা আমাকে হুডের নীচে কী চলছে সে সম্পর্কে আরও ভাল বোঝার জন্য সহায়তা করেছে।
আমি মনে করি না যে প্রত্যেকের জন্য পয়েন্টার দিয়ে শুরু করা জরুরী, তবে কী গুরুত্বপূর্ণ তা হল তারা বুঝতে পারে যে কেন মূল্য-প্রকারের পরিবর্তে রেফারেন্সগুলি ব্যবহার করা হয় এবং এটি বোঝার সর্বোত্তম উপায় হল এর পূর্বসূর, পয়েন্টারটি দেখার জন্য।