天天看點

分享嵌入式面試必考題#程式設計

作者:良許Linux

從大廠面試官撬出來的100道嵌入式面試必考題。每天3分鐘,為未來的自己避個坑。

我相信90%以上的人面試這道題答不上來,我的一個項目經驗豐富的學生真的是因為這道題導緻錯失offer。Class和Struct有什麼差別?面試中很多人遇到這個問題一臉懵逼,根本就不知道如何解答,因為在C++中stuct和class實在是太像了,既可以包含成員變量,又可以包含成員函數。

在這個視訊裡面我用3分鐘跟你講清楚,這二者到底有什麼差別。

·不同點1:預設的成員通路權限不同。class預設的成員通路權限是private。

→而structure預設的成員通路權限是public。比如我現在定義了一個類MyClass,一個結構體MyStuct,它們分别有一個成員變量x。請注意,在這裡我沒有給它指定是public還是private。

分享嵌入式面試必考題#程式設計

現在我在main畫數裡用MyStruc執行個體化了一個對象,然後我把這個執行個體化的對象成員變量x指派為20,這樣是沒有問題的,并應正常通過。這說明了struct預設的成員通路權限是public。然後我同樣用MyClass執行個體化了一個對象,同樣的将對象成員變量x指派為10,但是緩譯的時候就會報錯,而且在報錯資訊裡也給你提示了x是一個private類型的。

分享嵌入式面試必考題#程式設計

·不同點2:預設的繼承方式不同。

→struct預設的繼承方式是public。class預設的繼承方式是private,依然是這個類和結構體,但是我給成員變量加上了public關鍵字。現在我定義了一個子類SonClass,繼承了父類MyClass,定義了一個子結構體SonStruct繼承了父結構體MyStruct。

請注意,這裡的繼承我并沒有指定是public繼承還是private繼承。我們再在命函數裡面使用子結構體SonStruct執行個體化了一個對象,并且嘗試修改它繼承來的成員變量x。可以看到邊已正常通過,這說明經營者預設的繼承方式是public。同樣地我們使用子類SonClass執行個體化了一個對象,同樣嘗試去修改它繼承來的成員變量x,但是忽然報錯,而且報錯資訊也提示了受到隐式私有繼承的限制。說明class預設的繼承方式是private。

分享嵌入式面試必考題#程式設計

·第三個不同點是class可以用于定義模闆參數,structure則不能。比如在下面這段代碼裡邊定義了class的模闆函數,編譯正常通過。但如果把class換成了structure,則譯就會報錯。雖然structure和class太像了,但在實際使用場景中還是強烈建議大家去使用class來定義類,而是用structure來定義結構體。這樣做語義更加明确,代碼可讀性也更高。

分享嵌入式面試必考題#程式設計

關于更多面試常考題,也給大家整理了一份文檔,圖文并茂、易懂。有了這份文檔可以助力大家在秋招中拿到更心儀的offer。

這個視訊到此就結束了,喜歡的朋友記得一鍵三連。