2023年上半年軟體設計師C 題答案與分析

2021-06-14 13:19:20 字數 1896 閱讀 6787

2023年上半年軟體設計師c++題答案與分析

昨天剛考了軟體設計師,由於目前我正在學習c++的使用,所以對下午的c++試題比較感興趣,回來就根據記憶,把自己的答案,寫了出來,然後重新推理了一下源程式,測試編譯執行,最後對答案進行了分析。

#include

#include

using namespace std;

class cloneable

;class workexperience : public cloneable

int setworkexp(string workexp){}

cloneable * clone()

};class resume : public cloneable

public:

resume(string name)

~resume()  

}int set***(string ***)

int setage(int age)

int setworkexperience(workexperience * work)

cloneable * clone()

};int main()

下面給出我分析後的答案:

1、virtual cloneable * clone() = 0

2、workexperience * obj = new workexperience()

3、(workexperience *)(work->clone())

4、resume * obj = new resume(this->work)

5、(resume *)(a->clone())

分析如下:

1,c++題考虛函式似乎是慣例了,做過往年真題的同學應該有體會的。類cloneable 基本上就是乙個介面類,他的主要用途就是宣告乙個clone()函式,這個其實也是原型模式的概念所在,就是實現拷貝。由於希望所有子類進行重寫clone()函式,所以定義為虛函式。具體函式名、返回型別什麼的,參考子類裡面的clone函式的實現就可以知道了。

2,在workexperience 的clone函式種,obj沒有定義就開始使用了,不合理,所以就需要在空白處進行定義。定義為什麼型別?看obj有workexperience類的成員,那麼也就確定obj即workexperience類的物件。由於clone函式沒有傳入的引數,而要傳出obj,則obj需要有真實指向的內容,就需要new乙個了。

3,這個題我開始一看,很明顯的乙個賦值操作,似乎函式也非常簡單,也沒有其它輸入引數 ,好像直接賦值work就行了。這樣編譯也是可以通過的。可是,考官會給我們送分嗎?只怕沒有那麼幸福的事情。再聯絡原型模式的概念,它是要進行完整的拷貝,而不是僅僅指向就行了的。所以,這裡要進行一次clone。這裡又要注意,對於c++,編譯是比較嚴格的,等號前後的型別若不匹配,是會編譯報警甚至報錯的。這裡,我新增了強制型別轉換,不清楚考官會否要求型別匹配。

4,這題與第2題類似,可是不要掉以輕心,resume提供了兩個建構函式,考慮到resume類的clone函式要實現全部內容的拷貝,所以只能選擇前乙個建構函式resume(workexperience * work)。引數選擇,個人感覺使用work或者this->work都可以,因為在這個函式裡面,並沒有關於work名字的衝突問題。

5,這題與第3題類似,不過要注意的,乙個是型別匹配,很容易被忽略的。另外一點是其選擇範圍更大,似乎也可以新建乙個類,可是這樣,就與題意不相符了。使用一次clone,是將前面簡歷的內容拷貝了乙份,在新生成的resume物件裡面,就有了所有原來的物件(a)的內容,又可以繼續新增新的內容,且新的物件b沒有對原物件a的依賴--即物件a即使刪除了,也不影響物件b的繼續使用。

不分析不知道,一分析嚇一跳,根據我的分析,我竟然已經錯了兩個,本來還以為已經考慮的比較充分了,原來還是不夠小心啊!

總的感覺,每一題都考到了不同的內容,題目的難度是一年比一年大了。

軟體設計師考試18年上半年上午考試真題及解析 二

6.在安全通訊中,s將所傳送的資訊使用 8 進行數字簽名,t收到該訊息後可利用 9 驗證該訊息的真實性。選項 8 a.s 的公鑰 b.s的私鑰 c.t的公鑰 d.t的私鑰 9 a.s的公鑰 b.s的私鑰 c.t的公鑰 d.t的私鑰 答案 b,a 解析 數字簽名技術是將摘要資訊用傳送者的私鑰加密,與原...

軟體設計 2023年上半年選擇題重要知識點

1 以下關於計算機系統中斷概念的敘述中,正確的是 由i o裝置提出的中斷請求是可遮蔽中斷,電源掉電是不可遮蔽中斷 a 裝置提出的中斷請求和電源掉電都是可遮蔽中斷 b 由i o裝置提出的中斷請求和電源掉電都是不可遮蔽中斷 c 由i o裝置提出的中斷請求是可遮蔽中斷,電源掉電是不可遮蔽中斷 d 由i o...

2023年上半年軟師選擇題

2019.5.15 1 當執行一條指令時,首先需要根據pc中存放的指令位址,將指令由記憶體取到指令暫存器中,此過程稱為 取指令 與此同時,pc中的位址或自動加1或由轉移指標給出下一條指令的位址。此後經過分析指令,執行指令。完成第一條指令的執行,而後根據pc取出第二條指令的位址,如此迴圈,執行每一條指...