为对象分配整数.输出将是什么?
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
基类提供初始值设定项,因此基类将是默认构造的。 这将输出"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 构造函数,具有讽刺意味的是,第一个调用
相关文章:
- 为对象分配整数.输出将是什么?
- 以下与指针相关的代码的输出是什么?
- 从 c++ 中的实例化进程获取输出的可靠方法是什么?
- 我的输出结果是 0 英寸C++.可能是什么问题
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 以下程序在 c++ 中的输出是什么?
- 任何人都解释下面的代码,它的输出是什么?
- 当我打印字符串时,我不知道它是什么输出
- 假设包含所有必需的头文件,输出将是什么
- 如果我获得Integer和Double的产品,输出的数据类型是什么
- Qimage :: Pixel函数的10位输出特别是指的是什么
- 是什么导致异常输出以及如何修复
- C++程序的输出与预期不同的原因是什么?
- 给定输出的逻辑是什么
- 这段代码的输出是什么,它在构造函数中使用 strcpy?
- 将在 C++ 中输出多维数组内容的 for 循环的结构是什么
- 以下代码的输出是什么(答案因差异编译器而异)
- 在一行C 中,该代码后缀和前缀的输出的逻辑是什么
- 该代码将如何工作以及输出的输出是什么
- 在不同于依赖DLL的文件夹中输出已编译目标的正确方法是什么