在继承中,C++允许子类的成员和父类同名。此时,子类的同名成员会覆盖父类的同名成员。如果想使用父类的同名成员,需要使用类名+作用域运算符。下面这段代码演示了如何使用。
#pragma once
#include<iostream>
using std::cout;
using std::endl;
class CParent
{
public:
int a = 1;
int b = 2;
static int c;
void show()
{
cout << "我是父类的show函数" << endl;
cout << "a:" << a << " b:" << b << " c:" << c << endl;
}
};
class CSon : public CParent
{
public:
int a = 4;
void show()
{
cout << "我是子类的show函数" << endl;
cout << "a:" << a << " b:" << b << " c:" << c << endl;
}
};
#include"CParent.h"
int CParent::c = 3;
int main()
{
CParent p;
p.show();
p.c++;
CSon s;
s.show();
s.CParent::show();
s.CParent::a++;
s.CParent::show();
return 0;
}
运行结果如下:
注意,静态成员依旧只有一份。