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

সি/সি++: Struct vs Class পার্থক্য

সি++-তে স্ট্রাকচার ও ক্লাস মূলত একই। কিন্তু কিছু মাইনর পার্থক্য রয়েছে। পার্থক্যগুলো নিচে দেওয়া হলো।

  • ক্লাসের মেম্বার ডিফল্টভাবে প্রাইভেট, কিন্তু স্ট্রাকচারের মেম্বার পাবলিক। নিচের দুটি কোড দেখুন পার্থক্য বুঝতে।

উদাহরণ: ক্লাস (প্রাইভেট ডিফল্ট)

#include <iostream>
using namespace std;
class my_class {
    int x = 10;
};
int main() {
    my_class my_ob;
    cout << my_ob.x; // কম্পাইল এরর: x প্রাইভেট
}

আউটপুট

এই প্রোগ্রাম কম্পাইল হবে না। প্রাইভেট ডেটা মেম্বারের জন্য কম্পাইল টাইম এরর।

উদাহরণ: স্ট্রাকচার (পাবলিক ডিফল্ট)

#include <iostream>
using namespace std;
struct my_struct {
    int x = 10;
};
int main() {
    my_struct my_ob;
    cout << my_ob.x; // কাজ করবে
}

আউটপুট

10
  • যখন একটি স্ট্রাকচার ক্লাস বা স্ট্রাকচার থেকে ডেরাইভ করা হয়, তবে বেস ক্লাসের ডিফল্ট অ্যাক্সেস স্পেসিফায়ার পাবলিক, কিন্তু ক্লাস ডেরাইভ করলে ডিফল্ট প্রাইভেট।

উদাহরণ: ক্লাস থেকে ক্লাস ডেরাইভ (প্রাইভেট ডিফল্ট)

#include <iostream>
using namespace std;
class my_base_class {
public:
    int x = 10;
};
class my_derived_class : my_base_class { }; // ডিফল্ট প্রাইভেট ইনহেরিটেন্স
int main() {
    my_derived_class d;
    cout << d.x; // কম্পাইল এরর: x অ্যাক্সেসিবল নয়
}

আউটপুট

কম্পাইল হবে না। বেস ক্লাসের x ভেরিয়েবল অ্যাক্সেসিবল নয় বলে এরর।

উদাহরণ: ক্লাস থেকে স্ট্রাকচার ডেরাইভ (পাবলিক ডিফল্ট)

#include <iostream>
using namespace std;
class my_base_class {
public:
    int x = 10;
};
struct my_derived_struct : my_base_class { }; // ডিফল্ট পাবলিক ইনহেরিটেন্স
int main() {
    my_derived_struct d;
    cout << d.x; // কাজ করবে
}

আউটপুট

10
  1. C/C++-তে putwchar() ফাংশন

  2. C/C++-তে memcpy() ফাংশন

  3. AA ট্রি: C/C++-তে ব্যালেন্সড ট্রি ডেটা স্ট্রাকচার

  4. C++-এ লোকাল ক্লাস