Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

C++: Const Method Changing its Object

📅 2011-Jan-12 ⬩ ✍️ Ashwin Nanjappa ⬩ 📚 Archive

A const method cannot directly change its object in C++. But, there is only so much const-checking that can be done at compile time. It is well known that anything can be hacked in C++ using casting and pointers. I was surprised when I inadvertently created a simple const method that changed its object using just a reference:

#include <vector>
using namespace std;

typedef vector<int> IntVec;

class Foo
    void method()
        constMethod( _ivec );

    void constMethod( IntVec& iVec ) const
        iVec.push_back( 10 );

    IntVec _ivec;

int main()
    Foo foo;

    return 0;