将整数分配给对象。输出是什么?

问题描述 投票:-1回答:1
#include <iostream>

using namespace std;
class A{
    public:
  A(){
      cout<<"a";
  }  

  A(int x){
      cout<<"x";
  }  
};

class B: public A{
  public:
  B(A ){
      cout<<"b";
  }  

};
int main()
{
    B b(10);
    return 0;
}

B的构造函数如何接受整数值?为什么为什么先调用A的参数化构造函数,然后再调用默认构造函数?

c++ object inheritance constructor parameterized
1个回答
2
投票

由于B的构造函数需要一个A对象,并且A对象可以由整数构造,所以编译器将调用A(int)构造要传递给B的构造函数的参数。这将导致输出“ x”。由于B的构造函数没有为A基类提供初始化程序,因此将默认构造基类。这将输出“ a”。然后,B的构造函数的主体将执行,导致输出“ b”。

© www.soinside.com 2019 - 2024. All rights reserved.