C++面試常見問題
這裡我們將看到一些重要的C++面試問題。
C和C++有什麼區別?
要點 | C | C++ |
---|---|---|
簡介 | C語言由丹尼斯·裡奇在1969年左右於AT&T貝爾實驗室開發。 | C++由Bjarne Stroustrup於1979年開發。 |
語言型別 | 如前所述,C是程序式程式設計語言。 | 另一方面,C++支援過程式和麵向物件程式設計正規化。 |
OOPs特性支援 | 由於C不支援OOPs概念,因此它不支援多型性、封裝和繼承。 | C++作為面向物件程式語言,支援多型性、封裝和繼承。 |
資料安全 | 由於C不支援封裝,資料表現為自由實體,可以被外部程式碼操作。 | 另一方面,在C++中,封裝隱藏了資料,以確保資料結構和運算子按預期使用。 |
驅動型別 | C通常被稱為函式驅動語言。 | 另一方面,C++被稱為物件驅動語言。 |
支援的特性 | C不支援函式和運算子過載,也沒有名稱空間特性和引用變數功能。 | 另一方面,C++支援函式和運算子過載,也有名稱空間特性和引用變數功能。 |
指標和引用有什麼區別?
指標和引用之間的主要區別在於:
引用用於以另一個名稱引用現有變數,而指標用於儲存變數的地址。
引用不能賦值為null值,但指標可以。
引用變數可以透過值傳遞來引用,而指標可以透過引用傳遞來引用。
引用必須在宣告時初始化,而指標則不必。
引用與原始變數共享相同的記憶體地址,但也佔用堆疊上的一些空間,而指標擁有其自身的記憶體地址和堆疊上的大小。
什麼是C++中的虛擬函式?
C++中的虛擬函式用於建立基類指標列表,並呼叫任何派生類的成員函式,而無需知道派生類物件的型別。虛擬函式在執行時解析。
如果基類中宣告的虛擬函式是成員函式,那麼它在從該基類派生的每個類中都成為虛擬函式。因此,在派生類中宣告基類虛擬函式的重新定義版本時,不需要使用關鍵字virtual。
示例
#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++中的this指標?
C++中的每個物件都可以透過一個重要的指標(this指標)訪問其自身的地址。this指標是所有成員函式的隱式引數。因此,在成員函式內部,this可以用來引用呼叫物件。
友元函式沒有this指標,因為友元不是類的成員。只有成員函式才有this指標。
讓我們嘗試以下示例來理解this指標的概念:
示例
#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
廣告