網龍面試後的思考 開始讀C primer

2021-06-18 22:40:42 字數 3179 閱讀 2255

面試時,所問到的東西。

1.介面定義的規範是什麼?

2.stl中map的原理,和時間複雜度是什麼?

3.mfc中document類和view類聯絡

4.函式過載

5.函式覆蓋,函式覆蓋與虛函式之間的關係

很久之前就聽人建議c和c++精通乙個就行,演算法才是靈魂,而去網龍面試卻問到這麼多我不擅長的東西。直接出局了。

由於個人原因,導致我喪失了一次一次機會,我也很是遺憾。其實裡面有些公司,還是很對我的胃口的。

還是靜下心來,溫習一下c++吧,畢竟以前也很常用,很容易就熟練了。

可惜c++需要記憶的東西太多。。。這是我不喜歡它的原因之一。。。

可現在我又有什麼別得選擇呢,現在每一次機會,我都得把握住,否則真得失業了。

下面記錄一下,我比較薄弱,或者說是我以前的知識漏洞吧!

1.1 i/o,cin,cout

略1.2 注釋

c++中的注釋不可巢狀

/*/**/*/會出錯,原因是,把/*/**/識別為注釋,而*/則是半個注釋符,故語法錯誤。

1.4控制語句

while (std::cin >> value);

使用 istream

物件作為條件,結果是測試流的狀態。如果流是有效的(也就是說,如果讀入下乙個輸入是可能的)那麼測試成功。遇到

檔案結束符

或遇到無效輸入時,如讀取了乙個不是整數的值,則

istream

物件是無效的。處於無效狀態的

istream

物件將導致條件失敗。

從鍵盤輸入檔案結束符:

windows下ctrl+z  unix下ctrl+d

2.1c++ 是靜態型別(statically typed)語言,在編譯時執行型別檢查。

一些程式語言,特別是 smalltalk 和 python,在

執行時才檢查語句中物件的型別。

基本內建型別:整數、浮點數、單個字元和布林值的算術型別

void

的特殊型別.

表示整數、字元和布林值的算術型別合稱為整型

字元型別:char(單位元組),wchar_t(雙位元組)

整形:short半字長,int字長,long乙個或兩個字長

bool 型別表示真值

true

和 false,0為false,非零為true,佔據乙個位元組

在二進位制表示中,計算機是無型別區別的。

unsigned,無符號型別。

怎麼判斷型別的取值範圍範圍?  

#

include

<

iostream

>

using

namespace

std;

/*輸入乙個整形變數(bool型除外),讓你輸出它可能的取值範圍

*/template

<

typename t>

void cal_limit(t t)

int main(

)

2.2轉義符

\ooo,三個八進位制數,可以表示ascii碼,數字必須是0~7,三個數字組成的數小於400(八進位制,等價於十進位制的256)

\xddd三個十六進製制數,類似上,必須小於0x100(256)

奇怪的c++語法

int main(

)等價於

int main(

)

只是比較難以閱讀,少用為秒,這種方式一般在很長的巨集裡用到。

2.3.1

左值:左值可以出現在賦值語句的左邊或右邊。

右值:右值只能出現在賦值的右邊,不能出現在賦值語句的左邊。

初始化:int ival(1024);//直接初始化

int ival=1024;//複製初始化

直接初始化語法更靈活且效率更高。

內建型別變數的初始化

在函式體外定義的變數都初始化成 0,在函式體裡定義的內建型別變數不進行自動初始化。除了用作賦值操作符的左運算元,未初始化

變數用作任何其他用途都是沒有定義的。

類型別變數的初始化

如果定義某個類的變數時沒有提供初始化式,這個類也可以定義初始化時的操作。它是通過定義乙個特殊的建構函式即預設建構函式

來實現的。這個建構函式之所以被稱作預設建構函式,是因為它是「預設」執行的。如果沒有提供初始化式,那麼就會使用預設建構函式。不管變數在**定義,預設建構函式都會被使用。

std::

string global_str;//初始化為""

int global_int;//初始化為0

int main(

)

2.3.5. 宣告和定義

變數的定義

用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。

宣告用於向程式表明變數的型別和名字。定義也是宣告:當定義變數時我們宣告了它的型別和名字。可以通過使用extern關鍵字宣告變數名而不定義它。不定義變數的宣告包括物件名、物件型別和物件型別前的關鍵字extern:

extern int i;//宣告,而未定義

int i;//宣告並且定義

在 c++ 語言中,變數必須且僅能定義一次,而且在使用變數之前必須定義或宣告變數。

作用域:

區域性作用域 int foo()

全域性作用域 int b; int main(){}

語句作用域 while(1) int c;

類作用域 class a;

命名空間作用域namespace my

const

與其他變數不同,除非特別說明,在全域性作用域宣告的 const

變數是定義該物件的檔案的區域性變數。此變數只存在於那個檔案中,不能被其他檔案訪問。

通過指定 const

變更為 extern

,就可以在整個程式中訪問 const

物件:引用嚴格來說,「const

引用」的意思是「指向 const

物件的引用」。類似地,程式設計師使用術語「非 const

引用」表示指向非 const

型別的引用。 0

給主人留下些什麼吧!~~

後CMM時代的思考(1)

公司推 敏捷 了,我們的產品 被敏捷 了。本人所在的子產品,在經歷過幾個版本的對於敏捷的自行摸索之後,隨著整個產品進入了浩蕩的敏捷程序,後cmm時代拉開序幕。前段時間公司內部針對敏捷培訓,本來不屑這種材料,但是仔細看過之後,我對專案成員說,這個材料的是公司下大力氣準備的,很多敏捷的誤區都是前期各版本...

17國慶狂歡後的思考

快樂的時光都是稍縱即逝的,轉眼到了上班的日子,一大早正常的假期綜合症,第一天上班肯定很累。早上正常都是6點就起床 確實比原來懶惰了,原來都是5點多起床 今天7點十幾分才起床,精神也不好,趕緊洗漱完畢下樓去公司。出門看到乙個30多快40的中年男士匆忙的出了單元樓大門,狂奔向私家車,前面路口還有乙個小學...

開發後的思考與分析

事情是這樣子的,我們打算迭代開發這個功能,新增5個功能點,頁面算是重做,新增兩個狀態。所以我打算重構這個功能,原因有二,其一因為之前版本 臃腫,不適合查詢問題,而且存在許多使用問題 其二因為修改的東西有點多,所以得重構,用之前的 無法完成和修改使用。由於關係到公司隱私問題,這裡不貼出相關設計原型,並...