在用C++做工程时,继承是C++最常用的特性之一,因为它会使得工程复用性很高。但是现在存在一个问题,例如我们在使用MFC库时,往往会去继承库里面的一个类,但是我们并不去看父类里面的实现代码,所以在定义成员变量的时候可能会和父类里面的成员变量一样。但是这样会产生什么后果我们基本不怎么去关心,因为很多人都觉的无关紧要,都只是想着定义就行,并没有过关心它的原理及根本的东西。今天就来说说出现这样的问题会不会对程序产生影响。首先先看一段代码。
#include <iostream>
using namespace std;
// 定义了一个 Parent 类型的父类,里面有 i、j 两个成员变量(protected 表示成员变量只能在父类子类中被访问)
class Parent
{
protected:
int i;
int j;
};
// 定义一个子类 Child,它共有继承了 Parent 类,里面有一个和父类一样的成员变量 i
class Child : public Parent
{
protected:
int i;
// f()函数的作用是打印 当前父子类中的 i、j
void f()
{
cout << "Parent::i = " << Parent::i << endl;
cout << "Child::i = " << Child::i << endl;
cout << "Parent::j = " << Parent::j << endl;
}
public :
// 子类的构造函数
Child(int i, int j)
{
Parent::i = i;