c++之重载、重写、重定义

一、定义

    重载:重载指的是在同一个类中发生的,两个成员函数拥有相同的名称,但是他们的参数不一样。

              但是不能通过返回类型来判断。

    重定义:重定义也叫隐藏。它是发生的子类父类中的,即它的发生条件是继承。子类重新定义和父

                  类相同的函数他们的参数列表可以不同。(重定义的是父类的非虚函数)

    重写:也叫覆盖。它也是发生在子类中的,即它发生的条件也是继承关系。当我们对别人提供的方

              法不满意时,我们可以通过继承这个类然后将其方法改成我们需要的逻辑。

            (1)、被重写的函数不能是static的。

            (2)、函数的三要素(函数名、函数参数、函数返回值)完全一样。

            (3)、virtual函数重新是多态产生的必要条件之一。

二、应用

    重载:

    重载可以通过调用相同的函数名来实现不同数据类型的运算。

class A
{
        public :
        int a ;
        char b[10];
        void get_a(int &a)
        {
        	this->a = a;
        	printf("%d",this->a);
        }
        void get_a(const char *c)
        {
        	strcpy(this->b,c);
        	printf("%s",this->b);
		}
}; 
int main()
{
	int a= 10;
	const char *b= "sos";
	A d;
	d.get_a(b);
	d.get_a(a);  	
}

    重定义(也叫隐藏):

    

class A
{
	public :
	int a ;
	void get_a(int &b)
	{
		this->a = b;
		printf("%d",this->a);
	}	
};
class b :public A
{
	public :
	char b[10] ;
	void get_a(const char *p)
	{
		strcpy(this->b,p);
		printf("%s",this->b);
	}	
};
int main()
{
	int a=2;
	const char *p ="lucifer";
	b c;
	c.get_a(p);
	//c.get_a(a); //此时这句话会报错说明是否参数类型的改变,默认调用子类的函数
	c.A::get_a(a); //这是父类函数的调用方法 		
}

    重写:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

class A
{
	public :
	int a ;
	virtual void get_a(int &b)
	{
		this->a = b;
		printf("%d",this->a);
		printf("这是父类函数"); 
	}	
};
class b:public A
{
	public :
	int  b;
	virtual void get_a(int &c)
	{
		this->b = c;
		printf("%d",this->b);
		printf("这是子类函数"); 
	}	
};
int main()
{
	int a=1;
	A *p = NULL;
	b c;
	p = &c;
	p->get_a(a);  //这个函数的调用取决于父类函数有无virtual修饰,若有则调用子类的,否则调用父类的。		
}		

    上面这个其实就产生了多态,不过我会专门去说说多态。

!欢迎各位来指出不足之处

    






    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值