21xrx.com
2025-03-22 17:57:01 Saturday
文章检索 我的文章 写文章
C++父类和子类同名变量的处理方式
2023-07-05 08:58:14 深夜i     26     0
C++ 父类 子类 同名变量 处理方式

在C++中,如果子类中定义了与父类同名的成员变量,那么编译器会按照一定的规则来处理它们。

首先,如果子类中定义的成员变量和父类中定义的成员变量具有不同的数据类型,那么它们不会冲突,而是同名但不同数据类型的两个变量。

其次,如果子类中定义的成员变量和父类中定义的成员变量具有相同的数据类型,那么它们会发生隐藏现象,也就是说子类中的同名成员变量会隐藏父类中的同名成员变量,父类的同名成员变量将不会被使用。

当我们需要访问父类的同名成员变量时,可以使用作用域解析符号“::”,表示访问父类中的同名成员变量。例如,假设有一个父类A和一个子类B,它们都有一个名为“member”的整型成员变量:

class A
public:
  int member;
;
class B : public A
public:
  int member;
;
int main()
  B obj_b;
  obj_b.member = 1;
  obj_b.A::member = 2;
  return 0;

在上面的例子中,我们创建了一个B类的对象obj_b,并分别给B类中的member变量和A类中的member变量赋值。通过obj_b.member = 1; 可以直接给子类的成员变量member赋值,而通过obj_b.A::member = 2; 则可以访问父类中的成员变量member,并将其赋值为2。

总之,在C++中,当出现同名成员变量时,需要注意它们的数据类型和作用域。如果需要访问父类中的同名成员变量,可以使用“::”来进行限定。

  
  

评论区