একটি ক্যান struct
সি ++ মধ্যে উত্তরাধিকারসূত্রে হবে?
একটি ক্যান struct
সি ++ মধ্যে উত্তরাধিকারসূত্রে হবে?
উত্তর:
হ্যাঁ, struct
ঠিক মত হল class
ব্যতীত ডিফল্ট অ্যাক্সেসযোগ্যতা হয় public
জন্য struct
(একই এটা private
জন্য class
)।
হ্যাঁ. উত্তরাধিকার ডিফল্টরূপে সর্বজনীন।
সিনট্যাক্স (উদাহরণ):
struct A { };
struct B : A { };
struct C : B { };
অ্যালেক্স এবং ইভান ইতিমধ্যে যা বলেছে তা ব্যতীত, আমি যুক্ত করতে চাই যে একটি সি ++ স্ট্রাক্ট কোনও সি স্ট্রাক্টের মতো নয়।
সি ++ তে কোনও স্ট্রাক্টে সি ++ শ্রেণির মতো পদ্ধতি, উত্তরাধিকার ইত্যাদি থাকতে পারে।
অবশ্যই. সি ++ তে স্ট্রাক্ট এবং ক্লাসগুলি প্রায় অভিন্ন (প্রাইভেটের পরিবর্তে পাবলিকের কাছে খেলাপি হওয়ার মতো ছোট ছোট পার্থক্যগুলির মধ্যে রয়েছে)।
সি ++ তে কোনও কাঠামোর উত্তরাধিকার নিম্নলিখিত পার্থক্য বাদে শ্রেণীর সমান:
শ্রেণি / স্ট্রাক্ট থেকে কোনও কাঠামো উত্পন্ন করার সময়, বেস শ্রেণি / স্ট্রাক্টের জন্য ডিফল্ট অ্যাক্সেস-স্পেসিফায়ার সর্বজনীন। এবং কোনও ক্লাস প্রাপ্ত করার সময়, ডিফল্ট অ্যাক্সেস স্পেসিফায়ার ব্যক্তিগত।
উদাহরণস্বরূপ, প্রোগ্রাম 1 সংকলন ত্রুটির সাথে ব্যর্থ হয় এবং প্রোগ্রাম 2 দুর্দান্ত কাজ করে।
// Program 1
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // Is equivalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // Compiler error because inheritance is private
getchar();
return 0;
}
// Program 2
#include <stdio.h>
struct Base {
public:
int x;
};
struct Derived : Base { }; // Is equivalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // Works fine because inheritance is public
getchar();
return 0;
}