I am developing a shared library. Let's say I have the following class definition:
class MyClass {
public:
private:
virtual void foo1(int);
virtual void foo2(int, bool);
virtual void foo3(double);
virtual void reserved1();
virtual void reserved2();
virtual void reserved3();
class Impl;
Impl* impl_;
};
Virtual methods are reserved#not overridden in client code and are not called anywhere. They serve as placeholders for future expansion. Let's say I replace one of the reserved methods with a virtual function with a different signature and implementation:
class MyClass {
public:
private:
virtual void foo1(int);
virtual void foo2(int, bool);
virtual void foo3(double);
virtual void foo4(int, int);
virtual void reserved2();
virtual void reserved3();
class Impl;
Impl* impl_;
};
, , vtable . , reserved1(), , , - foo4. , - ODR. , reserved1, foo4?