C++中子类与父类定义同名同类型成员为何无错?将使用哪一个?
关于C++子类与父类同名成员的问题解答
1. 为何C++未报错?
这是因为C++支持**成员隐藏(Name Hiding)**特性:当子类定义了与父类同名的成员(成员变量或成员函数均可),属于合法语法行为,编译器不会报错。子类的同名成员会将父类的同名成员“隐藏”,而非触发命名冲突。
2. 执行Z.name = "Zombie";时访问的是哪个类的成员?
直接通过子类对象Z访问name时,会优先访问子类Instructor自身定义的name成员。
若要访问父类Student的name成员,需显式指定作用域:
Z.Student::name = "父类名字"; cout << Z.Student::name;
内容的提问来源于stack exchange,提问作者Zoran I
相关产品推荐
相关产品推荐

