1. 五大設計原則
1)單一職責原則:乙個類只負責一項職責。
2)介面隔離原則:乙個類對另乙個類的依賴應該建立在最小的介面上,不應該依賴它不需要的介面。
3)黎克特制替換原則:使用基類的地方可以透明地使用其子類的物件。
4)依賴倒置原則:高層模組不應該直接依賴低層模組,而應該依賴其抽象。
5)開閉原則:對擴充套件開放,對修改關閉。
2. 過載、重寫與隱藏的區別
過載:在乙個域中,函式名稱相同,但是引數不同。
重寫:子類覆蓋基類中函式名稱相同,引數相同,返回值相同(或返回值是基類函式返回值的子類)的虛函式。
隱藏:子類和基類函式名相同,但是引數不同。子類和基類函式名相同,引數相同,但是基類函式沒有virtual修飾。
3. 深拷貝與淺拷貝
如果乙個類擁有資源,且在類物件拷貝的過程中,資源重新分配,這個過程就是深拷貝。反之,如果沒有資源重新分配,就是淺拷貝。
4. 智慧型指標
智慧型指標是乙個類,儲存了乙個指向動態分配物件的指標。智慧型指標物件被銷毀的時候,可以確保該動態分配物件被釋放。
5. 編寫c++中的兩個類,乙個只能在棧中分配空間, 乙個只能在堆中分配
class stackonly
~stackonly() {}
private:
void* operator new(size_t size) {}
void operator delete(void* ptr) {}
};class heaponly
void destroy()
protected:
heaponly() {}
~heaponly() {}
};
6. string類的構造、析構、拷貝建構函式和賦值函式
string::string(const char* pstr) else
}
string::~string(void)
}
string::string(const string& other)
: m_str(null)
string& operator=(const string& other)
return *this;
}
7. 繼承與組合的區別
繼承是is-a的關係,組合是has-a的關係。
8. 介面與抽象類的區別
面試感想之二
今天是網易.9 30到網易大樓,很直接給了乙份開發的卷子,關在小窩子裡,就走了.做去吧您.題目 1.字串反轉.如 abcdefg 轉完後 gfedcba 要求時間複雜度是o 1 2 單鏈表逆置,要求時間複雜度和空間複雜度越小越好 3 int 和integer區別 4 寫出你所知道的排序演算法,和時間...
面試題整理 C (二)
1.類,介面的區別 從定義的角度 類描述乙個實體,包括狀態 屬性和動作 介面定義一類動作,沒有實現,也沒有狀態資訊 從程式的角度 介面是函式宣告 類是函式實現 介面可以有屬性,不能有欄位 乙個子類只能繼承乙個父類,但是可以繼承多個介面 2.介面和抽象類的區別 抽象類是一類事物的高度聚合,介面是定義行...
面試題之二
static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通的區域性變數有什麼區別?static函式與普通的函式有什麼區別?1 全域性變數 外部變數 的書名之前再冠以static就構成了靜態的全域性變數.全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式.這兩者在...