没有默认构造函数的类

Shr*_*ant 1 c++ constructor

我们可以创建一个没有默认构造函数的类对象数组,如果是,那么任何人都可以详细说明我们如何做到这一点?

对于main()中的Abc a [10]的后续类; 正在生成编译器错误'没有匹配函数来调用`Abc :: Abc()'

class Abc{
    private: 
           int x;
    public:
           Abc(int a){
           x = a;
           }
};

int main(){
    Abc a[10]; // Compilation would fail here, as it would look for default constructor
}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 9

我们可以创建一个没有默认构造函数的类对象数组吗?

是的你可以.您必须调用其中一个可用的构造函数来初始化该数组的每个成员.唯一的方法是使用初始化列表初始化数组:

Abc a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,将整数放入数组就足够了,因为Abc构造函数不是显式的.这意味着你可以这样做:

Abc a = 42; // Calls A(42)
Run Code Online (Sandbox Code Playgroud)

如果它是明确的,你将不得不说

Abc a[10] = { Abc(1), Abc(2), ..... };
Run Code Online (Sandbox Code Playgroud)

显然这不能很好地扩展,但它适用于小型阵列.