首页 > 试题广场 >

请指出下列代表有几处错误。

[单选题]
请指出下列代表有几处错误?
#include <stdio.h>
class A
{
    public:
      virtual void f(){}
    public:
       A()
       {
           f();
       }
};

class B1:public A()
{
    private:
        char *_s;
    public:
        B1()
        {
            _s=new char[1024];
        }
    private:
        void f()
        {
            delete _s[];
            _s=NULL;
        }
}

class B2:public A
{
    private:
        int * _m;
    public:
        B2()
        {
            _m=new int(2016);
        }
    private:
        virtual void f()
        {
            delete _m;
            _m=NULL;
        }
}
int main()
{
    A *a1=new B();
    A *a2=new C;
    delete a1;
    delete a2;
    return 0;
}
  • 3
  • 4
  • 5
  • 6
6处
line12      classB1:publicA
line24     delete[] _s;
line27     };
line43     };
line46     A*a1 = new B1();
line47     A*a2 = new B2;
发表于 2017-08-13 17:39:25 回复(18)
这道题我不会做,但是写出这样的代码会被项目经理拍死

发表于 2017-10-10 12:53:07 回复(0)
我觉得如果是面试官出的题,他想要考的知识点(忽略打印错误):1.不能在构造函数中调用虚函数,这样做不能产生虚调用,因为子类都没有构造完成,如何动态绑定,而编译器允许写这样的代码,只是不产生虚调用。2.既然父类构造函数都没有调用f去释放内存,那么又没有写析构函数,必然要产生内存泄露,两个析构函数,两点。3.对于函数f,没有检查指针是否为空,容易重复delete,导致程序崩溃,又是两点。4.public B(),也许是想考验会不会写继承吧。。。。。。。再加上打印错误,错误点数不胜数。总结:出题人****。
编辑于 2020-12-28 01:36:52 回复(2)
类型名都搞错,我宁愿相信打字的人打错了 T T
发表于 2017-08-18 22:22:22 回复(2)
共6处错误:
12. class B1:public A() -> class B1:public A
24. delete _s[]; -> delete []_s;
27. } -> };
43. } -> };
46. A*a1=new B(); -> A*a1=new B1();
47. A*a2=new C; -> A*a2=new B2;
发表于 2018-11-18 18:51:11 回复(1)
析构函数在哪里,怎么释放new申请的内存啊!
发表于 2017-08-19 12:49:26 回复(0)
不会做,但是我会蒙啊
发表于 2017-08-17 21:36:30 回复(4)
屏蔽此题
发表于 2019-01-20 21:45:45 回复(0)
这种题选最多的是不是就好了…
发表于 2017-09-04 14:09:21 回复(0)
5
发表于 2017-08-12 21:12:27 回复(0)
这题可真G2 ZZ。。
我还看了半天 怀疑是不是我没睡醒。

发表于 2019-05-31 08:41:04 回复(0)
建议以后遇到这种题就跳吧 不要浪费宝贵的学习时间
发表于 2022-02-16 17:06:04 回复(0)
不懂
发表于 2021-09-09 21:37:24 回复(0)
这代码写出来会被我打死的
发表于 2017-10-17 14:33:32 回复(1)
🤔题目还有一个错误(代表-代码)
发表于 2020-10-21 09:19:16 回复(0)
这是肉眼编译器哈,不合适哈
发表于 2020-08-01 09:52:13 回复(0)
沙雕题目
发表于 2020-02-26 22:04:12 回复(0)
写这个代码的人会被打死的……
发表于 2019-03-16 16:57:56 回复(0)
明摆着,出题的人搞事情
发表于 2018-04-19 21:56:39 回复(0)
出题人脑袋有坑
发表于 2018-03-29 09:29:42 回复(0)