立即学习:https://edu.csdn.net/course/play/9186/191701?utm_source=blogtoedu
day14.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
//#include <iostream>
//#include "Human.h"
//#include "men.h"
//
//
//int main()
//{
// std::cout << "Hello World!\n";
//
// 二: 派生类对象定义时调用构造函数的顺序
// 当定义子类对象时 是要调用父类和子类的构造函数的 而且 父类的构造函数的函数体先执行
//
//
// 三 public 、protected ,private
// 总结 : 三种访问权限
// men.m_Age = 12;
// men.m_prol = 14;
//
//
// 四:函数 遮蔽
// Men men;
// men.funcpub();
// men.funcpub;
// 也就是子类中 如果有了一个同名函数 那么父类中 不管有几个同名函数 子类中都无法访问。
// 如果我们确实是想调用父类中的同名函数 怎么办?
// (1) 在子类的成员函数中调用 父类名::函数名
// men.samenamefunc(12);
//
// (2) using :
//
// c++11: 让父类同名函数在子类中可见。
// 通过using这个关键字 让父类的同名函数 在子类可见
//
// men.samenamefunc();
// men.samenamefunc(12);
//
// 说明这种using 、、、 只能指定函数名 则凡是基类中的public 在子类中都可见
// 引入的主要目的 是用来实现在子类对象中调用父类的重载版本. 该函数在父类的参数和子类中不一样
//
//
// return 0;
//}
#include"men.h"
#include<iostream>
Men::Men()
{
/*m_prol = 14;
m_Age = 14;*/
//m_privl = 14;
funcpro();
//std::cout << "执行了Men::Men()" << std::endl;
}
void Men::samenamefunc(int)
{
Human::samenamefunc(12);
Human::samenamefunc();
std::cout << "执行了void Men::samenamefunc(int)" << std::endl;
}
#include "human.h"
#include <iostream>
//实现
Human::Human()
{
std::cout << "执行了Human::Human()" << std::endl;
}
Human::Human(int abc)
{
std::cout << "执行了Human::Human(int)" << std::endl;
}
void Human::samenamefunc()
{
}
void Human::samenamefunc(int abc)
{
}
#ifndef __MEN__
#define __MEN__
#include"Human.h"
//class Men: private Human
//class Men : protected Human
class Men : public Human //表示Men是Human的子类
{
public:
Men();
public:
//v/\oid samenamefunc();
void samenamefunc(int,int,int,int);
public:
using Human::samenamefunc;
};
#endif