কম্পিউটার টিউটোরিয়াল

C++-এ struct এবং typedef struct-এর পার্থক্য

মূলত struct কীওয়ার্ড একটি স্ট্রাকচার ডিফাইন করতে ব্যবহৃত হয়। C-এ স্ট্রাকচার ভ্যারিয়েবল ডিক্লেয়ার করার সময় struct কীওয়ার্ড লিখতে হয় (যেমন struct MyStruct s;)। typedef ব্যবহার করলে একটি নতুন নাম দিয়ে স্ট্রাকচার ব্যবহার করা যায় struct কীওয়ার্ড ছাড়া (যেমন MyStruct s;)।

C++-এ অবস্থা

C++-এ struct এবং typedef struct-এর মধ্যে কোনো পার্থক্য নেই। কারণ C++-এ সব struct/union/enum/class ডিক্লেয়ারেশন ইমপ্লিসিটলি typedef করা থাকে, যতক্ষণ না একই নামে অন্য ডিক্লেয়ারেশন আড়াল করে।

C-এ পার্থক্য (তুলনার জন্য):

// C-এ
struct Point { int x, y; };
struct Point p1;        // অবশ্যই 'struct' লাগবে
typedef struct Point Point_t;
Point_t p2;             // 'struct' লাগবে না

C++-এ:

// C++-এ
struct Point { int x, y; };
Point p1;      // OK, 'struct' লাগে না
Point p2;      // typedef struct Point Point; ইমপ্লিসিট

সাবধানতা: Forward Declaration

typedef-কে ফরওয়ার্ড ডিক্লেয়ার করা যায় না। তাই যদি typedef struct ব্যবহার করেন, তাহলে সেই টাইপ ব্যবহার করার আগে অবশ্যই টাইপের ডেফিনিশনवाले হেডার ফাইল #include করতে হবে।

সারসংক্ষেপ: C++-এ শুধু struct Name { ... }; লিখলেই চলে। typedef যোগ করার কোনো প্রয়োজন নেই, বরং কখনো কখনো এটি ফরওয়ার্ড ডিক্লেয়ারেশন বাধা দিতে পারে।

  1. C++-এ string এবং char[] টাইপের পার্থক্য

  2. C++-এ new অপারেটর এবং operator new-এর পার্থক্য কী?

  3. C++-এ 'struct' এবং 'typedef struct'-এর পার্থক্য

  4. C++ স্ট্রিং কনস্ট্যান্ট এবং ক্যারেক্টার কনস্ট্যান্টের পার্থক্য