为对象分配整数.输出将是什么?

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

本文关键字:是什么 输出 整数 对象 分配      更新时间:2023-10-16
#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基类提供初始值设定项,因此基类将是默认构造的。 这将输出"a"。 然后 B 的构造函数的主体将执行,导致输出"b"。

我不是故意粗鲁的,但为了你的代码,不要做这种混乱的事情。

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

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

当你像这样编写代码时,它的可读性会变得更加可读。(见这篇文章:http://lazyfoo.net/articles/article02/index.php(

现在,回答你的问题:

1(类B的构造函数将A对象作为参数(您只是忘记将变量命名为B( A foo ){...}(。

2(当你传递10作为参数时,你是在这个过程中这样做的A foo(10)或这个A foo = A(10)。这就是第一个x的解释。

3( 以下a来自 A 默认构造函数,b来自 B 构造函数,具有讽刺意味的是,第一个调用