প্রশ্নটি বর্ণনা করার জন্য এটি একটি সরল উদাহরণ:
class A {};
class B
{
B(A& a) : a(a) {}
A& a;
};
class C
{
C() : b(a) {}
A a;
B b;
};
সুতরাং বি সি এর একটি অংশ আপডেট করার জন্য দায়বদ্ধ I আমি কোডটি লিন্টের মাধ্যমে চালিয়েছি এবং এটি রেফারেন্স সদস্যটির সম্পর্কে ছড়িয়ে পড়ে: লিন্ট # 1725 । এটি ডিফল্ট অনুলিপি এবং অ্যাসাইনমেন্টগুলিতে যত্ন নেওয়ার বিষয়ে কথা বলে যা যথেষ্ট ন্যায্য, তবে ডিফল্ট অনুলিপি এবং কার্যনির্বাহী পয়েন্টারগুলির সাথেও খারাপ, সুতরাং সেখানে খুব সুবিধা নেই।
আমি সর্বদা রেফারেন্সগুলি ব্যবহার করার চেষ্টা করি যেহেতু আমি নগ্ন পয়েন্টারগুলি সেই পয়েন্টারটি মোছার জন্য দায়ী কে সে সম্পর্কে অনিশ্চিতভাবে পরিচয় করিয়ে দেয়। আমি মান অনুসারে বস্তু এম্বেড করতে পছন্দ করি তবে যদি আমার পয়েন্টার দরকার হয় তবে আমি শ্রেণীর সদস্য ডেটাতে অটো_পিটার ব্যবহার করি যা পয়েন্টারের মালিক, এবং অবজেক্টটিকে রেফারেন্স হিসাবে চারপাশে পাস করি।
আমি সাধারণত সদস্য ডেটাতে কেবলমাত্র পয়েন্টার ব্যবহার করব যখন পয়েন্টারটি শূন্য হতে পারে বা পরিবর্তন করতে পারে। ডেটা সদস্যদের জন্য রেফারেন্সের তুলনায় পয়েন্টারগুলি পছন্দ করার অন্য কোনও কারণ আছে কি?
রেফারেন্স যুক্ত কোনও বস্তু কার্যনির্বাহী হওয়া উচিত নয়, যেহেতু একবার সূচনা করার পরে কোনও রেফারেন্স পরিবর্তন করা উচিত নয়?