筆試面試題記錄

2021-07-02 04:55:03 字數 1159 閱讀 7886

1. c++為什麼不建議在.h檔案中使用using namespace std;

namespace 的引入是為了解決名字衝突的問題,而 using namespace... 的引入是為了方便程式設計師,使其不用每次都輸入長長的名字。這些都跟效能無關。

通常不建議在標頭檔案中使用 using namespace *** 語句,不僅是對 std。如果標頭檔案 a.h 使用了該語句,所有直接或間接包含 a.h 的檔案都隱式使用了該語句,這會很容易導致名字衝突。

2.static作用 在

全域性變數

之前加上關鍵字static,全域性變數就被定義成為乙個全域性靜態變數。

1)記憶體中的位置:靜態儲存區(靜態儲存區在整個程式執行期間都存在)

2)初始化:未經初始化的全域性靜態變數會被程式自動初始化為0(自動物件的值是任意的,除非他被顯示初始化)

3)作用域:全域性靜態變數在宣告他的檔案之外是不可見的。準確地講從定義之處開始到檔案結尾。

注:當static用來修飾區域性變數的時候,它就改變了區域性變數的儲存位置,從原來的棧中存放改為靜態儲存區。但是區域性靜態變數在離開作用域之後,並沒有被銷毀,而是仍然駐留在記憶體當中,直到程式結束,只不過我們不能再對他進行訪問。

c語言中使用靜態函式的好處:

靜態函式會被自動分配在乙個一直使用的儲存區,直到退出應用程式例項,避免了呼叫函式時壓棧出棧,速度快很多。 

不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名,因為同名也沒有關係。

3.兩個關於類的建立的問題

使乙個物件可以在堆上建立,但是不能在棧上建立

class a

static void deleteinstance(a* a)

}private:

a(){}

};int main()

使乙個物件可以在棧上建立,但是不能在堆上建立

方法是通過過載new和delete操作符並且私有化,這樣就可以禁止物件在堆上分配了(因為乙個物件在堆上的建立只能通過new來實現)

class a

void operator delete(void* ptr)

public:

a(){}

}int main()

筆試面試題記錄

在intel 8086中,加減乘除那個整數運算最耗時 所有計算機中,乘除減法都是通過半加器全加器等加法來實現的,乘法左移,除法右移,但除法會多乙個分母不能為零的處理,是除法最耗時 19本書,編號從1 19。從中抽五本,任意相鄰兩本不是相鄰編號的情況有多少種。先將問題簡化成5本書取2本。可以假設2本書...

前端筆試題面試題記錄(上)

個人部落格了解一下 obkoro1.com 前端筆試題面試題記錄 下 判斷陣列和物件分別都有好幾種方法,其中用prototype.tostring.call 相容性最好。function isobjarr value else if object.prototype.tostring.call va...

面試題記錄

面試題記錄 2012年6月13日杭州某網路技術公司 1,空指標自加 int p int pa null p pa p 求p的值 這道題考的貌似指標的加法,因為對於空指標比較敏感直接感覺有問題,所以填寫出錯.到底如何呢?直接反彙編之 int p int pa null 010d14f1 mov dwo...