Re: [問題] pointer能出的題目

作者: bachelorwhc (單身老王)   2015-04-12 03:12:17
上學期 教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)》之銘言:
: 要出一個使用指標的題目
: 我自己原本出的太簡單了
: 只是指標函式,被退
: 想請問有沒有不錯的出題方向可以分享
: 需要一些題目情境,希望能給我點建議
作者: dirkc (3781615)   2015-04-12 08:07:00
即便沒有virtual,用*ptr=A()來初始化也容易出問題,例如當A內有成員是自定義struct或class的時候

Links booklink

Contact Us: admin [ a t ] ucptt.com