C++有关class继承的问题

下面代码,输出结果为0

#include <iostream>
using namespace std;

class A1{
    public:
        int a = 0;
        void print(){
            cout << a << endl;
        }
};
class A2:public A1{
    public:
        int a = 1;
};


int main(){
    A2 a2;
    a2.print();
}

为什么输出为0而不是1?正确的应该怎么写?

子类A2中的语法错误,这样并不会重写基类A1中的a,print()使用的仍然是基类A1中 的a,所以输出仍然是0,必须重载print(),或者将基类中的a改为属性后在子类中重载属性,C++只会重载方法不会重载字段,最简单的修正方法是子类添加构造函数,在构造函数中将a赋值为1:
class A2:public A1{
public:
· A2(){a=1;}
};

如果我的回答对你有帮助,请点击旁边的采纳按钮,谢谢

可以参考一下:
C++类继承关系问题_青青的专栏--C/C++ OOA/D Design Pattern-CSDN博客      C++类继承关系问题    在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,代表了接口继承含义,而他们分别具体代表了什么含义呢?1. public   从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,子类   可以代替父类完成父类接口所声明的行为,也就是必须符合“Li https://blog.csdn.net/metasearch/article/details/2451915
C/C++类的继承_Lavener_Love的博客-CSDN博客_c++类继承 一.类的继承class Shape{};class Circle : public Shape{ };语法:class B : public A{}B继承于A,A类是父类,B是派生类(子类)当 B继承于A时,自动将父类中的所有public 成员继承,无法继承private的新的修饰符:protected(1)该成员不能被外部访问,如private(2)该成员可以被子类继承,如p... https://blog.csdn.net/weixin_42394170/article/details/86630205