C++的重载、覆盖、隐藏
07 Nov 2012
- 同一个类中的函数
- 函数名相同
- 参数不同
- virtual关键字可有可无
class Test
{
public:
void post(const char* addr);
void post(const char* addr, int port); // 重载
};
- 不同的类中
- 函数名相同
- 参数相同
- 必须有virtual关键字
class Base
{
public:
void post(const char* addr);
};
class Test: public Base
{
public:
virtual void post(const char* addr); // 覆盖
};
- 基于重载(不同的两个类)与覆盖之间(没有virtual关键字)
- 函数名相同,参数不同,virtual可有可无,不在同一个类中
- 函数名相同,参数相同,不在同一个类中,没有virtual关键字。
- 不同点:不在同一个类中与没有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); // 参数不同,不在同一类中
};