class A {public: A() { n = 0; } int value() { return next(n); } void strange() { next(-3); } protected: virtual int next( int i ) { return n = n + i * i; } int n; };
invariant A:
class B : public A {public: B() : A() { } protected: virtual int next( int i ) { return n = n + (n + 1) * i; } };
not invariant A