A: C++ object 與 member functions 的 const 修飾字表示的意義如下:
- 當一個 member function 宣告為 const 時,表示 *this 無法修改的,也就是無法修改其中的 data members。
- 只有宣告為 const 的 object 才可以存取被宣告為 const 的 member function。
- 宣告為 const 的 object 無法呼叫宣告為 non-const 的 member functions。
- 這是為了避免在無法預期的狀況下被 member functions 修改到 *this 或其中的 data members。
- 然而 const member function 可以被 overloaded 成 non-const member function,宣告為 non-const object 時會呼叫 non-const member function,宣告為 const object 會呼叫 const member function。
- constructor 與 destructor 是例外,無法被宣告為 const,因為這兩個 member function 都會修改 *this。
- const object 需要初始化 (initialization) data members。
範例:
#includeusing namespace std; class CBox { public: CBox(int length, int width, int height): m_length(length), m_width(width), m_height(height) { cout << endl << "constructor called."; } virtual ~CBox() { cout << endl << "decontructor called."; } int volume() const { return m_length * m_width * m_height; } private: int m_length; int m_width; int m_height; }; int main (int argc, char **argv) { const CBox abox(2, 3, 4); cout << endl << "volume:" << abox.volume(); return 0; }
沒有留言:
張貼留言