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