我们可以创建一个没有默认构造函数的类对象数组,如果是,那么任何人都可以详细说明我们如何做到这一点?
对于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)
我们可以创建一个没有默认构造函数的类对象数组吗?
是的你可以.您必须调用其中一个可用的构造函数来初始化该数组的每个成员.唯一的方法是使用初始化列表初始化数组:
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)
显然这不能很好地扩展,但它适用于小型阵列.
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |