C++ 类继承 父类 子类 函数遮蔽

一、派生类
        类之间有种层次关系,有父类、子类。
        比如车这个类,当成父类(也叫基类、超类)派生出卡车、轿车,他们属于子类/派生类

继承:子类可以继承父类的成员函数、变量

子类对象创建时,先执行父类构造函数,在执行子类构造函数

二、访问权限:public protected private

  三、函数遮蔽:在子类中,有与父类同名的函数,那子类无法访问父类的同名函数
    有两种方法可以解决:

(1)、在子类中的同名函数中去调用父类函数
(2)使用using,让父类函数可见

#ifndef _HUMAM_H
#define _HUMAN_H
#pragma once

#include <iostream>

//定义一个父类
class Human 
{
public:
	Human();
	Human(int);

public:
	int m_age;//年龄
	char m_name[100];//名字
	int m_public;
	void funcpub() 
	{
	}
	void samenamefunc();
	void samenamefunc(int,int);


protected:
	int m_protected;
	void funcpro()
	{
	}

private:
	int m_private;
	void funcpri()
	{
	}
};

#endif
#include"human.h"
using namespace std;

Human::Human()
{
	cout << "调用了Human::Human()构造函数" << endl;

}

Human::Human(int) 
{
	cout << "调用了Human::Human()构造函数" << endl;
}

void Human::samenamefunc()
{
	cout << "调用了Human::samenamefunc()函数" << endl;
}
void Human::samenamefunc(int,int)
{
	cout << "调用了Human::samenamefunc(int,int)函数" << endl;
}
#ifndef _MEN_H
#define _MEN_H

#include <iostream>

#include"human.h"

//定义一个子类
class Men :public Human //表示Men是Human的子类
{
public:
	Men();

public:
	using Human::samenamefunc;//方法二,使用using,让父类的同名函数在子类中可见。
	void samenamefunc();
	void samenamefunc(int);
	
};

#endif
#include"men.h"

using namespace std;


Men::Men()
{
	cout << "调用了Men::Men()构造函数" << endl;

}
void Men::samenamefunc()
{
	Human::samenamefunc();//方法一,在子类中调用父类函数
	cout << "调用了Men::samenamefunc()函数" << endl;
}
void Men::samenamefunc(int)
{
	cout << "调用了Men::samenamefunc(int)函数" << endl;
}
#include <iostream>
#include"human.h"
#include"men.h"

int main()
{
 
    Men men;
    men.samenamefunc();
    men.samenamefunc(12);
    men.samenamefunc(12,12);

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值