假定AB为一个类,则执行 “AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为
时间: 2024-05-20 09:13:21 浏览: 141
该语句调用了类AB的构造函数3次,分别是:
1. `AB a(2)`:创建了一个名为a的对象,并将2作为参数传递给构造函数。
2. `AB b[3]`:创建了一个名为b的AB类型的数组,长度为3,将会调用3次默认构造函数。
3. `AB *p[4]`:创建了一个名为p的AB类型指针数组,长度为4,将会调用4次默认构造函数。
相关问题
假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句为___。
定义语句为:`const int aa;` 或者 `static const int aa;`(如果需要将其作为类的静态数据成员)。需要注意的是,定义常量数据成员时必须在类的构造函数初始化列表中进行初始化,否则会编译错误。例如:
```cpp
class AB {
public:
AB(int a) : aa(a) {}
private:
const int aa;
};
```
假定用户为类AB定义了一个构造函数“AB(int aa=0, int bb=0) {a=aa; b=bb;}”,则定义该类的对象时,可以有___种不同的定义格式。
当用户为类AB定义了一个构造函数 `AB(int aa=0, int bb=0) {a=aa; b=bb;}` 时,可以有以下几种不同的定义格式:
1. 不传入参数,使用默认参数值:`AB obj1;`
2. 传入一个参数:`AB obj2(10);` 或者 `AB obj3{20};`
3. 传入两个参数:`AB obj4(30, 40);` 或者 `AB obj5{50, 60};`
4. 显式地使用默认参数值:`AB obj6();` 或者 `AB obj6{};`
5. 使用赋值语句进行初始化:`AB obj7 = AB(70, 80);` 或者 `AB obj8; obj8 = AB(90, 100);`
需要注意的是,当定义一个类对象时,如果不传递任何参数,则会使用默认参数值初始化相应的数据成员,否则会使用传递的参数值进行初始化。
阅读全文