C++重写和重载的区别
2014-05-23 16:48
78 查看
重载就是:是函数名相同,参数列表不同 重载只是在类的内部存在。
重写:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。说白了,就是在继承关系中出现的 。
一句话就是重载是同一层次函数名相同。覆盖是在继承层次中成员函数的函数原型完全相同。
重写主要标志特征:
1. 被重写的函数不是static的。必须是virtual的。
2 重写函数必须有相同的类型,名称和参数列表
说了上面那么多,直接来段代码吧。
class a
{
public:
void xy(int x){ cout << "xxx " << x << endl; } ① |
void xy(float x){ cout << "xxx " << x << endl; } ② |这是重载了①的函数。 重载是在同一个类发生。
virtual void gd(void){ cout << "a::gd(void)" << endl;}
};
class b : public a
{
public:
virtual void gd(void){ cout << "b::gd(void)" << endl;} //这就是重写。被重写的函数必须是虚函数。
};
重写:也叫做覆盖。子类重新定义父类中有相同名称和参数的虚函数。说白了,就是在继承关系中出现的 。
一句话就是重载是同一层次函数名相同。覆盖是在继承层次中成员函数的函数原型完全相同。
重写主要标志特征:
1. 被重写的函数不是static的。必须是virtual的。
2 重写函数必须有相同的类型,名称和参数列表
说了上面那么多,直接来段代码吧。
class a
{
public:
void xy(int x){ cout << "xxx " << x << endl; } ① |
void xy(float x){ cout << "xxx " << x << endl; } ② |这是重载了①的函数。 重载是在同一个类发生。
virtual void gd(void){ cout << "a::gd(void)" << endl;}
};
class b : public a
{
public:
virtual void gd(void){ cout << "b::gd(void)" << endl;} //这就是重写。被重写的函数必须是虚函数。
};
相关文章推荐
- C++ 重写重载重定义区别
- 基类重载C++中的重载丶重写丶重定义丶重定向的区别
- C++_重载、重写(覆盖)和隐藏的区别:
- C++ 重写重载重定义区别
- C++中重载(overload)、重写(override,也叫做“覆盖”)和重定义(redefine)的区别?
- C++ 重写重载重定义区别
- (转)C++重写、重载和重定义的区别
- C++ 重写重载重定义区别
- C++ 重写重载重定义区别
- C++中重载、重写和重定义的区别
- C++ 重写重载重定义区别
- C++中的重载丶重写丶重定义丶重定向的区别
- C++中重定义、重写、重载的区别以及隐藏与覆盖的访问
- C++中重定义、重写、重载的区别以及隐藏与覆盖的访问
- C++中重载与重写函数区别及虚函数(转载)
- 【C++基础】重载overload、重写(覆盖)override、隐藏hide的区别
- C++ 重写重载重定义区别
- C++中重写、重载与重定义区别【转】
- 面向对象C++中重载、重写(覆盖)、隐藏的区别
- C++覆盖、重写、重载的区别