首页 > 试题广场 >

有以下程序#include us...

[单选题]
有以下程序
#include <iostream>
using namespace std;
class D {
    int d;
public:
    explicit D(int x=1) : d(x) {}
    ~D() { cout<<"D";}
};

int main(){
    D d[]={_____________};
    D* p=new D[2];
    delete[]p;
    return 0;
}
程序运行的结果是DDDDD,请为横线处选择合适的程序()
  • 3,3,3
  • D(3), D(3), D(3)
  • 3,3,3,3
  • D(3,3),D(3,3)
运行的结果打印了五遍D,只有析构函数存在打印,deleteD[2]时会调用两次析构函数打印两次,剩下的三个需要自己初始化时输入三个int型的数字,当系统回收资源时会调用三次析构函数。
发表于 2020-09-13 16:26:09 回复(0)
C++中的关键字 explicit 主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即 implicit 。explicit关键字作用于单个参数的构造函数,如果构造函数有多个参数,但是从第二个参数开始,如果各参数均有默认赋值,也可以应用explicit关键字防止隐式转换。
发表于 2022-10-07 10:06:02 回复(0)
看B,好奇怪
发表于 2020-09-27 19:21:24 回复(0)
应该是多选题,A也对
发表于 2022-05-13 09:49:41 回复(1)
<p>这道题AB都可以</p><p><br></p>
发表于 2023-03-04 15:12:44 回复(1)
AB都ok啊
发表于 2021-05-20 14:44:09 回复(1)
<p>这道题AB都可以</p><p><br></p>
发表于 2021-01-30 19:06:16 回复(0)