發新話題

[討論] 大家來找Bug, 有意思的程式問題?

大家來找Bug, 有意思的程式問題?

Q1: 下列那邊有問題?

class A
        {
        A(){};
        protected:
                double _a;
        public:
                A(double a) : _a(a) {}
       
                double eval(double a1)
                {
                        return _a * a1;
                }
                virtual ~A(){}
        };
       
class B : public A
        {
        public:
                double eval( double b )
                {
                        _a = _a * b;
                        return _a;
                }
        };

class C
        {
        public:
                C() : _myA(0) {}
                double _a;
                A* _myA;
                ~C()
                {
                if ( _myA != 0 )
                delete _myA;
                }
        };

class D : public A, public C
        {
        public:
                int run(double d) { return d + _a; }
        };

Q2:以下找出錯誤跟可能的危險

void main()
{
A* testB = new B;
double testVal = b.eval( 4.0 );
C testC;
testC._myA = new A(4);
C testC2 = testC;
D testD;
int testVal2 = testD.run( 3.0 );
delete testB;
}

Q3:以下程式那邊造成complier有問題? 可以保留SetValue的Const-ness嗎? 如果可以,怎麼修改?
class cTest
        {
        public:
                cTest(){};
                ~cTest(){};
               
        void SetValue( const double val ) const
                {
                        m_value = val;
                }

        private:
                double m_value;
        };

Q4:以下程式是否有memory leak問題, 如果有,怎麼避免?
class cTest
        {
        public:
                cTest(){};
                ~cTest(){};

        private:
                double m_double[100];
        };

void function( cTest* test )
{
        delete test;
        test = new cTest();
}

void main( void )
{
        cTest *t = new cTest();
        function( t );
        delete t;
}

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。