一、派生类
类之间有种层次关系,有父类、子类。
比如车这个类,当成父类(也叫基类、超类)派生出卡车、轿车,他们属于子类/派生类
继承:子类可以继承父类的成员函数、变量
子类对象创建时,先执行父类构造函数,在执行子类构造函数
二、访问权限: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);
}