C++中函数的重载,重写,重定义

C++中函数的重载,重写,重定义

函数重载

是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型

#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
	base()
	{
		std::cout << "class base has created\n";
	};
	void show()
	{
		std::cout << "class:base\n";
	};
	void show(string name)
	{	
		std::cout << "class:base-name:" + name+ '\n';
	};
	void show(int age)
	{
		std::cout << "class:base-age:" + age + '\n';
	};
};

int main()
{ 
	base BS;
	BS.show();
	BS.show("Lihua");
}
class base has created
class:base
class:base-name:Lihua

函数重写

继承类重写基类中的方法,实现方法是在基类中要重写的函数前加关键字virtual,如果基类声明中该函数被重载了则在继承类中必须全部重写对应的方法!否则基类中未被重写的方法将被覆盖,即:派生类对象不可以使用这些未被重写而被覆盖的方法

// CClearn.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
	base()
	{
		std::cout << "class base has created\n";
	};
	virtual void show()
	{
		std::cout << "class:base\n";
	};
	virtual void show(string name)
	{	
		std::cout << "class:base-name:" + name+ '\n';
	};
};
class student :public base
{
public:
	virtual void show(string name)
	{
		std::cout << "class:student-name:" + name + '\n';
	};

};
int main()
{ 
	base BS;
	BS.show();
	BS.show("Lihua");
	student std;
	//std.show();
	std.show("xiaoming");
}
class base has created
class:base
class:base-name:Lihua
class base has created
class:student-name:xiaoming

函数重定义

在继承类中重写基类函数,如果基类中对应函数前没有关键字virutual 则基类方法被覆盖,派生类对象无法使用基类对应的方法

#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
	base()
	{
		std::cout << "class base has created\n";
	};
	void show()
	{
		std::cout << "class:base\n";
	};
	void show(string name)
	{	
		std::cout << "class:base-name:" + name+ '\n';
	};
};
class student :public base
{
public:
	void show(int age)
	{
		std::cout << "class:student-age:";
		std::cout << age;
	};

};
int main()
{ 
	base BS;
	BS.show();
	BS.show("Lihua");
	student std;
	//std.show();
	std.show(19);
}
class base has created
class:base
class:base-name:Lihua
class base has created
class:student-age:19
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值