C++的重载、覆盖、隐藏

  1. 同一个类中的函数
  2. 函数名相同
  3. 参数不同
  4. virtual关键字可有可无
class Test
{
public:
    void post(const char* addr);
    void post(const char* addr, int port);  // 重载
};
  1. 不同的类中
  2. 函数名相同
  3. 参数相同
  4. 必须有virtual关键字
class Base
{
public:
    void post(const char* addr);
};

class Test: public Base
{
public:
    virtual void post(const char* addr);    // 覆盖
};
  1. 基于重载(不同的两个类)与覆盖之间(没有virtual关键字)
  2. 函数名相同,参数不同,virtual可有可无,不在同一个类中
  3. 函数名相同,参数相同,不在同一个类中,没有virtual关键字。
  4. 不同点:不在同一个类中与没有virtual关键字。
class Base
{
public:
    void post(const char* addr);
    void get(const char* addr);
};

class Test: public Base
{
    void post(const char* addr);                // 没有virtual关键字
    void get(const char* addr, int port);       // 参数不同,不在同一类中
};