首页 > 试题广场 >

下面代码存在哪些问题? Class IObject { };

[问答题]
下面代码存在哪些问题?
Class IObject
{
};
Class B:public IObject
{
    public:
//constructor
…
    public:
        Int nB;
};
class C:public IObject
{
    public:
//constructor
…
    public:
        std::string strC;
};
int main()
{
    std::vector vecObjects;
    vecObjects.push_back(new B);
    vecObjects.push_back(new C);
    C* pC=static_cast(vecObjects[0]);
    std::cout<<”what will happen and why ?”
}

  1. Class, Int   改成小写
  2. std::vector vecObjects 改成 std::vector<IObject *> vecObjects
  3. C* pC=static_cast(vecObjects[0]); 改成  C* pC= dynamic_cast<C *>(vecObjects[0]); 然后再后面判断 pC 是否为NULL  
  4. 内存泄露 推荐使用std::shared_ptr<IObject> 做vector的模板参数
编辑于 2015-12-28 16:59:15 回复(0)
 std::vector vecObjects  没有指定类型 
vecObjects.push_back(new B); vecObjects.push_back(new C);
Push_back不同类型的对象。

发表于 2015-01-13 17:47:14 回复(1)