C++基础知识,C++11中的多态和重载,函数遮蔽,using多态的引入

试验类的定义:
Human.h

#ifndef __HUMAN__
#define __HUMAN__
class Huamn
{
public:
	Huamn();
	Huamn(int);
	void SameNameMethod();
	void SameNameMethod(int);
public:
	int a;
};
#endif // !__HUMAN__

Human.cpp

#include "Human.h"
#include<iostream>
Huamn::Huamn()
{
	std::cout << "调用了Human无参构造函数" << std::endl;
}
Huamn::Huamn(int a) :a(a)
{
	std::cout << "调用了Human一参构造函数" << std::endl;
}
void Huamn::SameNameMethod()
{
	std::cout << "调用了Huamn::SameNameMethod()" << std::endl;
}
void Huamn::SameNameMethod(int)
{
	std::cout << "调用了Huamn::SameNameMethod(int)" << std::endl;
}

Man.h

#ifndef __MAN__
#define __MAN__
#include"Human.h"
class Man :public Huamn
{
public:
	Man();
	void SameNameMethod();
	using Huamn::SameNameMethod;
};
#endif // !__HUMAN__

Man.cpp

#include "Man.h"
#include<iostream>
Man::Man()
{
	std::cout << "调用了Man无参构造函数" << std::endl;
}
void Man::SameNameMethod()
{
	Huamn::SameNameMethod();
	Huamn::SameNameMethod(12);
	std::cout << "调用了Man::SameNameMethod()" << std::endl;
}
派生类,子类 / 父类,超类
  • 继承:派生类对象定义时调用构造函数顺序:
    先调用父类构造函数,在调用子类构造函数
Man man;

执行效果:
在这里插入图片描述

访问权限的设置

权限:public,protected,private
继承方式,成员按照父类中成员的访问权限和子类的继承方式中,最低访问权限进行继承,
protected,成员函数,对象不能调用,但是类中的函数可以调用

函数遮蔽

意思就是,父类中某个函数名重载了很多不同的方法,在子类继承中,如果子类写了一个同名的函数
那么父类中所有同名的重载函数,均不能调用,很不合理,但就是这样
解决方法:

  • 1、可以在子类的函数中进行,父类::函数名()的方式进行调用
man.SameNameMethod();
//Man类,Huamn类中如何写的可以看开头的代码

执行效果:
在这里插入图片描述

  • 2、c++11中引入了using的概念,就是为了让父类中的重载函数在子类中以多态的形式进行调用。
man.SameNameMethod(12);

执行效果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值