I have some questions about inheritance and function overloading. I wrote some interfaces something like below. Now I'm trying to call some function of the parent class from derived class but it doesn't work as I intended.
Why is it possible to call b.hello() but not b.test()?
#include <iostream>
using namespace std;
class A {
public:
    void hello() {}
    void test() {}
    virtual void test(int a) {}
};
class B : public A {
public:
    void test(int a) override {}
};
int main() {
    B b;
    // Is possible to call test(int) through B
    b.test(1);
    // Is not possble to call test() through B
    b.test();
    // But, is possible to call hello() through B
    b.hello();
}