C++重载重写和重定义的区别
Posted 老稳转码农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++重载重写和重定义的区别相关的知识,希望对你有一定的参考价值。
说明
2.老稳目前是研一,学习压力较大,还请谅解!
3. 资源失效/查找,后台留言即可,看见会及时补上!
关于失效
1.个人网盘已经满了,所有资源务必及时转存!
2.另老稳分享资源的链接全部为永久链接!只是当分享的文件过大/被举报,即使是永久链接也会出现失效!因此!请大家务必及时转存!
相信大家看到这三个东西就已经晕了,心里在想这是什么?
这也是面试常问的问题之一,今天就来好好看看他们之间的区别
首先看重载的定义,重载应该是三个之中学的最早的一个概念。
重载:
1.前提是必须在同一个类中进行,(子类无法重载父类的函数 ,因为父类同名函数将被名称覆盖)
2.函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。
3.如果仅仅是返回值不同,其他都相同,是无法构成重载的,希望大家不要踩坑
4. 重载是编译期间根据函数类型和个数决定函数的调用。
举例如下
class A
{
public:
void print(int a, int b)
{
cout << a << b << endl;
}
void print(int a)
{
cout << a<<endl;
}
protected:
private:
int a;
};
重写:必须发生在父类和子类之间,而且父类和子类中的函数必须有完全相同的函数原型,
当使用virtual声明之后能够产生多态。
class A
{
public:
virtual void print(int a)
{
cout << a<<endl;
}
protected:
private:
int a;
};
class B:public A
{
public:
virtual void print(int a)
{
cout << "hello"<<a << endl;
}
protected:
private:
};
重定义:重定义的概念和重写一样,只不过是没有virtual
class A
{
public:
void print(int a)
{
cout << a<<endl;
}
protected:
private:
int a;
};
class B:public A
{
public:
void print(int a)
{
cout << "hello"<<a << endl;
}
protected:
private:
};
扫描二维码获取
更多精彩
老稳转码农
点个在看你最好看
以上是关于C++重载重写和重定义的区别的主要内容,如果未能解决你的问题,请参考以下文章
9-1:C++多态之对多态的理解和多态的实现条件以及虚函数还有重载重写冲定义的区别
c++重载(overload)和重写(override)的区别和虚函数