Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
Say we have an abstract class Foo declared as so: class Foo { public: virtual void test() = 0; }; Let's say that we make a derived concrete class FooDerived, and decide to mark it's ve...
#1: Initial revision
Why can't a derived class add a const qualifier to a method?
Say we have an abstract class `Foo` declared as so: ```cpp class Foo { public: virtual void test() = 0; }; ``` Let's say that we make a derived concrete class `FooDerived`, and decide to mark it's version of `test` as `const` as it doesn't modify its state. ```cpp class FooDerived : public Foo { public: void test() const override { std::cout << "FooDerived!" << std::endl; } }; ``` ``` main.cpp:12:10: error: ‘void FooDerived::test() const’ marked ‘override’, but does not override ``` Why is this not allowed? I thought that it would be, given that the only real function of the qualification is to be able to be called on const instances. It shouldn't be any more restrictive on the caller than the non-const version. Also, is there a good way to achieve this?