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
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP