1. 程式人生 > >c++之--const override

c++之--const override

派生類中重寫某成員函式如下:

class A

{

public:

virtual void WriteTo(BinaryOutputStream &os) const = 0;

};

template<typename T>

class B : public A

{

public:

virtual void WriteTo(BinaryOutputStream &os) const override
{
T data =value_;
if (encode_type_ == icdmap::signal::EncodeType::ENCODE_BCD){
data = BcdEncode<T>(data);
}
os.WriteNumeric<T, BIT_NUM>(data, byte_order_);
}

private:

template<typename T>
T BcdEncode(T dec_value)const {return (T)0;}

private:

T value_;

};

1. override時,函式宣告必須完全不變,否則報錯。

2. 在編寫const成員函式時,不慎修改了資料成員,或者呼叫了其它非const成員函式,編譯器將指出錯誤。