首页 > 试题广场 >

对于本章定义的Grand、Superb和Magnificen

[问答题]
对于本章定义的Grand、Superb和Magnificent类,假设pg为Grand *指针,并将其中某个类的对象的地址赋给了它,而ps为Superb *指针,则下面两个代码示例的行为有什么不同?


if (ps = dynamic_cast<Superb *>(pg))
    ps->say();     // sample #1
if (typeid(*pg) == typeid(Superb))
    (Superb *) pg) ->say();   // sample #2

推荐
对于示例#1,如果pg指向一个Superb对象或从Superb派生而来的任何类的对象,则if条件为true。具体地说,如果pg指向Magnificent对象,则if条件也为true。对于示例#2,仅当指向Superb对象时,if条件才为true,如果指向的是从Superb派生出来的对象,则If条件不为true。
发表于 2018-09-03 20:36:58 回复(0)