Когда я читаю Effective С++, он говорит, никогда не переопределяйте не виртуальную функцию в С++.
Однако, когда я его протестировал, код ниже компилируется правильно. Так какой смысл? Это ошибка или просто плохая практика?
class A {
public:
void f() { cout<<"a.f()"<<endl;};
};
class B: public A {
public:
void f() { cout<<"b.f()"<<endl;};
};
int main(){
B *b = new B();
b->f();
return 0;
}