成员变量重名
可以在变量名前加类名::解决
#include <iostream>
class Object
{
public:
int x;
int get_x() { return x; }
};
class seeObject:public Object
{
public:
int x;
seeObject()
{
Object::x = 300;
}
};
int main()
{
seeObject stone;
std::cout << stone.Object::get_x();
system("pause");
}
这里的输出结果未300
成员方法重名
#include <iostream>
class Object
{
public:
char Name[5]{};
int show() { std::cout << "Object"; }
};
class seeObject:public Object
{
public:
int x;
int show( int x ) { std::cout << "Object"; }
};
int main()
{
seeObject stone;
stone.show();
}
注意,此时无论show()传入或不传入参数,都是调用seeObject里面的方法,而不是继承的方法,因为show(int x)覆盖了show(),要想不被覆盖,可以使用using Object::show(),这句代码可以添加到seeObject中,这样就能调用
如果子类中原有的和继承的方法一模一样,包括参数也一样,就要用类名::来区分,语法和处理成员变量同名时一样。