এখানে আমরা কিছু গুরুত্বপূর্ণ C++ ইন্টারভিউ প্রশ্ন দেখব।
-
C এবং C++ এর মধ্যে পার্থক্য কি?
কী | C | C++ |
---|---|---|
পরিচয় | C ডেনিস রিচি 1969 সালের দিকে AT&T বেল ল্যাবসে তৈরি করেছিলেন। | C++ 1979 সালে Bjarne Stroustrup দ্বারা বিকাশ করা হয়েছিল। |
ভাষার ধরন | যেমনটি আগে উল্লেখ করা হয়েছে C হল পদ্ধতিগত প্রোগ্রামিং। | অন্যদিকে, C++ উভয় পদ্ধতিগত এবং অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং প্যারাডাইম সমর্থন করে। |
OOPs বৈশিষ্ট্য সমর্থন | যেহেতু C OOPs ধারণাকে সমর্থন করে না তাই এর পলিমরফিজম, এনক্যাপসুলেশন এবং উত্তরাধিকারের জন্য কোনো সমর্থন নেই। | সি++ পলিমারফিজম, এনক্যাপসুলেশন এবং উত্তরাধিকারের জন্য সমর্থন রয়েছে কারণ এটি একটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা হচ্ছে |
ডেটা নিরাপত্তা | যেহেতু C এনক্যাপসুলেশন সমর্থন করে না তাই ডেটা একটি মুক্ত সত্তা হিসাবে আচরণ করে এবং বাইরের কোড দ্বারা ম্যানিপুলেট করা যেতে পারে। | অন্যদিকে C++ এনক্যাপসুলেশনের ক্ষেত্রে ডেটা স্ট্রাকচার এবং অপারেটরগুলিকে উদ্দেশ্য অনুযায়ী ব্যবহার করা হয়েছে তা নিশ্চিত করতে ডেটা লুকিয়ে রাখে। |
চালিত প্রকার | সি সাধারণভাবে ফাংশন-চালিত ভাষা হিসাবে পরিচিত। | অন্যদিকে, C++ অবজেক্ট চালিত ভাষা হিসাবে পরিচিত। |
বৈশিষ্ট্য সমর্থিত | C ফাংশন সমর্থন করে না এবং অপারেটর ওভারলোডিং-এরও নেইমস্পেস বৈশিষ্ট্য এবং রেফারেন্স পরিবর্তনশীল কার্যকারিতা নেই। | অন্যদিকে, C++ উভয় ফাংশন সমর্থন করে এবং অপারেটর ওভারলোডিং-এ নামস্থান বৈশিষ্ট্য এবং রেফারেন্স পরিবর্তনশীল কার্যকারিতা রয়েছে। |
-
পয়েন্টার এবং রেফারেন্সের মধ্যে পার্থক্য কি?
পয়েন্টার এবং রেফারেন্সের মধ্যে প্রধান পার্থক্য হল -
-
রেফারেন্সগুলি একটি বিদ্যমান ভেরিয়েবলকে অন্য নামে উল্লেখ করতে ব্যবহৃত হয় যেখানে পয়েন্টারগুলি ভেরিয়েবলের ঠিকানা সংরক্ষণ করতে ব্যবহৃত হয়।
-
রেফারেন্সের একটি শূন্য মান নির্ধারণ করা যাবে না কিন্তু পয়েন্টার করতে পারে।
-
একটি রেফারেন্স ভেরিয়েবলকে মান দিয়ে রেফারেন্স করা যেতে পারে যেখানে একটি পয়েন্টার রেফারেন্স করা যেতে পারে তবে রেফারেন্স দ্বারা পাস করা যেতে পারে।
-
একটি রেফারেন্স ঘোষণার শুরু করতে হবে যদিও পয়েন্টারের ক্ষেত্রে এটি প্রয়োজনীয় নয়।
-
একটি রেফারেন্স মূল ভেরিয়েবলের সাথে একই মেমরির ঠিকানা ভাগ করে কিন্তু স্ট্যাকের উপর কিছু স্থান নেয় যেখানে একটি পয়েন্টারের নিজস্ব মেমরি ঠিকানা এবং স্ট্যাকের আকার থাকে
-
C++ এ ভার্চুয়াল ফাংশন কি?
C++-এ ভার্চুয়াল ফাংশনগুলি প্রাপ্ত ক্লাস অবজেক্টের ধরন না জেনেও যেকোনও প্রাপ্ত ক্লাসের বেস ক্লাস পয়েন্টার এবং কল পদ্ধতির একটি তালিকা তৈরি করতে ব্যবহার করে। ভার্চুয়াল ফাংশন রানটাইমে দেরিতে সমাধান করা হয়।
যদি একটি বেস ক্লাসের একটি ভার্চুয়াল ফাংশন একবার সদস্য ফাংশন হিসাবে ঘোষণা করা হয়, তবে এটি সেই বেস ক্লাস থেকে প্রাপ্ত প্রতিটি ক্লাসে ভার্চুয়াল হয়ে যায়। সুতরাং, ভার্চুয়াল বেস ক্লাস ফাংশনের পুনঃসংজ্ঞায়িত সংস্করণ ঘোষণা করার সময় উদ্ভূত শ্রেণীতে ভার্চুয়াল শব্দটি ব্যবহার করা আবশ্যক নয়৷
উদাহরণ
#include<iostream> using namespace std; class B { public: virtual void s() { cout<<" In Base \n"; } }; class D: public B { public: void s() { cout<<"In Derived \n"; } }; int main(void) { D d; // An object of class D B *b= &d; // A pointer of type B* pointing to d b->s(); // prints"D::s() called" return 0; }বলে
আউটপুট
In Derived
C++ এ এই পয়েন্টারটি কী?
এই পয়েন্টার নামক একটি গুরুত্বপূর্ণ পয়েন্টারের মাধ্যমে C++-এর প্রতিটি বস্তুর নিজস্ব ঠিকানায় অ্যাক্সেস রয়েছে। এই পয়েন্টারটি সমস্ত সদস্য ফাংশনগুলির একটি অন্তর্নিহিত পরামিতি। অতএব, একটি সদস্য ফাংশনের ভিতরে, এটি আহ্বানকারী বস্তুর উল্লেখ করতে ব্যবহার করা যেতে পারে।
বন্ধু ফাংশনে এই পয়েন্টার নেই, কারণ বন্ধুরা ক্লাসের সদস্য নয়। শুধুমাত্র সদস্য ফাংশন একটি এই পয়েন্টার আছে.
এই পয়েন্টার −
এর ধারণাটি বোঝার জন্য আসুন নিম্নলিখিত উদাহরণটি চেষ্টা করিউদাহরণ
#include <iostream> using namespace std; class Box { public: // Constructor definition Box(double l = 2.0, double b = 2.0, double h = 2.0) { cout <<"Constructor called." << endl; length = l; breadth = b; height = h; } double Volume() { return length * breadth * height; } int compare(Box box) { return this->Volume() > box.Volume(); } private: double length; // Length of a box double breadth; // Breadth of a box double height; // Height of a box }; int main(void) { Box Box1(3.3, 1.2, 1.5); // Declare box1 Box Box2(8.5, 6.0, 2.0); // Declare box2 if(Box1.compare(Box2)) { cout << "Box2 is smaller than Box1" <<endl; } else { cout << "Box2 is equal to or larger than Box1" <<endl; } return 0; }
আউটপুট
Constructor called. Constructor called. Box2 is equal to or larger than Box1