作者bachelorwhc (單身老王)
看板C_and_CPP
標題Re: [問題] pointer能出的題目
時間Sun Apr 12 03:12:17 2015
上學期 教C時 出題給學生 由於測驗是用 OnlineJudge
所以實在很難設計題目
後來我們想了一個題目
Input會要求學生在特定記憶體位置 賦值不同型別的資料
最後再把記憶體 以單Byte單位 逐個以int型別輸出資料
(結果一堆學生直接用Scanf來做……
那時候算是礙於課程進度 還沒教Struct
所以我沒辦法指定自定型別來玩學生就是了
Function Pointer的難度 對某些學校的畢業生來說 已經算高了
如果考的是C++的話
可以考Memory Allocation的機制
例如Stack或Pool 可以提供Header File讓學生完成剩下的代碼
或者是考方提供Memory Allocator後 讓考生用placement-new初始化物件
由於C++的繼承機制 如果是子類別(Derived Class)
沒辦法直接用以下做法完成初始化
A* ptr {(A*)new char[sizeof(A)]};
*ptr = A();
這種做法 會導致 virtual function 無法被正常呼叫
(virtual table根本沒有被初始化)
不過嚴格來說 這種題目 不是在考Pointer
而是在考C++常識 強迫學生去使用Placement new
shared_ptr跟unique_ptr我覺得也可以考考看
※ 引述《trytryit (EDISON)》之銘言:
: 要出一個使用指標的題目
: 我自己原本出的太簡單了
: 只是指標函式,被退
: 想請問有沒有不錯的出題方向可以分享
: 需要一些題目情境,希望能給我點建議
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.241.165
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428779540.A.DFD.html
※ 編輯: bachelorwhc (114.34.241.165), 04/12/2015 03:28:01
→ dirkc: 即便沒有virtual,用*ptr=A()來初始化也容易出問題,例如當A 04/12 08:07
→ dirkc: 內有成員是自定義struct或class的時候 04/12 08:08