यहां हम कुछ महत्वपूर्ण C++ इंटरव्यू प्रश्न देखेंगे।
C और C++ के बीच क्या अंतर हैं?
| मुख्य बिंदु | C | C++ |
|---|---|---|
| परिचय | C को डेनिस रिची ने 1969 के आसपास AT&T बेल लैब्स में विकसित किया था। | C++ को ब्योर्न स्ट्रॉस्ट्रप ने 1979 में विकसित किया था। |
| भाषा प्रकार | जैसा कि पहले उल्लेख किया गया है, C प्रक्रियात्मक प्रोग्रामिंग है। | दूसरी ओर, C++ प्रक्रियात्मक और ऑब्जेक्ट-ओरिएंटेड दोनों प्रोग्रामिंग पैराडाइम का समर्थन करता है। |
| OOPs फीचर समर्थन | चूंकि C OOPs अवधारणा का समर्थन नहीं करता इसलिए इसमें पॉलीमॉर्फिज्म, एनकैप्सुलेशन, और इनहेरिटेंस के लिए कोई समर्थन नहीं है। | C++ में पॉलीमॉर्फिज्म, एनकैप्सुलेशन, और इनहेरिटेंस के लिए समर्थन है क्योंकि यह एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है |
| डेटा सुरक्षा | चूंकि C एनकैप्सुलेशन का समर्थन नहीं करता इसलिए डेटा एक मुक्त इकाई की तरह व्यवहार करता है और बाहरी कोड द्वारा हेरफेर किया जा सकता है। | दूसरी ओर 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; // क्लास D का एक ऑब्जेक्ट
B *b= &d; // B* टाइप का एक पॉइंटर जो d की ओर इशारा करता है
b->s(); // prints "D::s() called"
return 0;
}
आउटपुट
In Derived
C++ में this पॉइंटर क्या है?
C++ में हर ऑब्जेक्ट की एक महत्वपूर्ण पॉइंटर के माध्यम से अपने स्वयं के पते तक पहुंच होती है जिसे this पॉइंटर कहा जाता है। this पॉइंटर सभी मेंबर फंक्शन के लिए एक निहित पैरामीटर है। इसलिए, एक मेंबर फंक्शन के अंदर, this का उपयोग आह्वान करने वाले ऑब्जेक्ट को संदर्भित करने के लिए किया जा सकता है।
फ्रेंड फंक्शन के पास this पॉइंटर नहीं होता है, क्योंकि फ्रेंड क्लास के मेंबर नहीं होते हैं। केवल मेंबर फंक्शन के पास this पॉइंटर होता है।
आइए this पॉइंटर की अवधारणा को समझने के लिए निम्न उदाहरण आज़माएं -
उदाहरण
#include <iostream>
using namespace std;
class Box {
public:
// कंस्ट्रक्टर परिभाषा
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; // बॉक्स की लंबाई
double breadth; // बॉक्स की चौड़ाई
double height; // बॉक्स की ऊंचाई
};
int main(void) {
Box Box1(3.3, 1.2, 1.5); // बॉक्स1 घोषित करें
Box Box2(8.5, 6.0, 2.0); // बॉक्स2 घोषित करें
if(Box1.compare(Box2)) {
cout << "Box2 is smaller than Box1" <
आउटपुट
Constructor called. Constructor called. Box2 is equal to or larger than Box1