继承中遇到子类和父类中存在相同的变量或者函数该怎么处理嘞?
这里我们假设一个父类father 和一个子类son
一个成员变量m_a; 父类中m_a=120; 子类中m_a=250.
一个成员函数func。功能是打印 father(son)的func的调用。
1.变量
)1.如果只有父类中有m_a:
#include<iostream>
using namespace std;
class father
{
public:
void func()
{
cout << "father的func的调用" << endl;
}
int m_a=120;
};
class son :public father
{
public:
//int m_a=250;
void func()
{
cout << "son的func的调用" << endl;
}
};
void test01()
{
son a;
cout <<"m_a= "<<a.m_a << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果 :
)2.父类子类中都有m_a:
#include<iostream>
using namespace std;
class father
{
public:
void func()
{
cout << "father的func的调用" << endl;
}
int m_a=120;
};
class son :public father
{
public:
int m_a=250;
void func()
{
cout << "son的func的调用" << endl;
}
};
void test01()
{
son a;
cout <<"m_a= "<<a.m_a << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果 :
那么,怎样才能在父类子类都有m_a的时候输出父类中的数据呢
只需要在输出时加上父类的作用域
a.m_a
a.father::m_a
这样就能输出了。
代码如下:
#include<iostream>
using namespace std;
class father
{
public:
void func()
{
cout << "father的func的调用" << endl;
}
int m_a=120;
};
class son :public father
{
public:
int m_a=250;
void func()
{
cout << "son的func的调用" << endl;
}
};
void test01()
{
son a;
cout <<"m_a= "<<a.father::m_a << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
2.函数
函数的方式和成员变量基本一样
都是 只有父类调用父类
父类子类都有调子类
加上父类作用域调父类
下面我就举一个例子,其他情况大家自己复制代码运行一下就了解了:
父类子类同在:
#include<iostream>
using namespace std;
class father
{
public:
void func()
{
cout << "father的func的调用" << endl;
}
int m_a=120;
};
class son :public father
{
public:
int m_a=250;
void func()
{
cout << "son的func的调用" << endl;
}
};
void test01()
{
son a;
a.func();
a.father::func();
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果: