将一个整数分配给一个对象。输出结果是什么?

Allocating an integer to an object. What will be the output?

#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 的参数化构造函数,然后调用默认构造函数?

由于 B 的构造函数采用 A 对象,而 A 对象可以从整数构造,编译器将调用 A(int) 来构造传递给 B 的构造函数的参数。这将导致输出 "x"。由于 B 的构造函数没有为 A 基 class 提供初始化器,因此基 class 将被默认构造。这将输出 "a"。然后执行B的构造函数体,导致输出"b"。

我无意无礼,但为了您的代码,请不要做这种乱七八糟的事情。

首先,您需要学习如何正确缩进和 space 您的代码。

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

当您像这样编写代码时,它的可读性会提高很多。 (见这篇文章:http://lazyfoo.net/articles/article02/index.php

现在,回答您的问题:

1) class B 的构造函数以一个 A 对象作为参数(你只忘了命名你的变量 B( A foo ){...} )。

2) 当您将 10 作为参数传递时,您是在进程 A foo(10) 或此 A foo = A(10) 中执行此操作。这就是第一个 x.

的解释

3) 下面的a来自A的默认构造函数而b来自B的构造函数,讽刺的是,第一个被调用。