More effective C++

2018-06-20  本文已影响0人  szn好色仙人
不要对数组使用多态。
class CFahter
{
public:
    CFahter() : nValue(0) {}
    virtual ~CFahter() {}

private:
    int nValue;

public:
    const int GetValue() const { return nValue; }
};

class CChild : public CFahter
{
private:
    double aValue[10];
};

int main()
{
    CChild aChild[3] = {};
    CFahter* pFather = aChild;

    int aValue[] =
    {
        pFather[0].GetValue(),  //[0] = 0
        pFather[1].GetValue(),  //[1] = -858993460
        pFather[2].GetValue()   //[2] = -858993460
        //-858993460即0xCCCCCCCC
    };

    return 0;
}

谨慎定义类型转换函数

class CTest
{
public:
    CTest(int nValue) {}    
    operator int() { return 0; }
};

void Fun(CTest Test){}

int main()
{
    CTest Test(0);

    Fun(0);                 //令人不悦或者会感到意外的转换
    int nValue = 1 + Test;  //令人不悦或者会感到意外的转换
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读