AB *p[4]调用几次构造函数?AB b[4]呢?
"动态数组" "静态数组" "动态指针数组" "静态指针数组"
AB类
class AB{
public:
AB(int y=2){
x=y;
total++;
std::cout << "已调用" << total<< "次"<<std::endl;
};
int x;
static int total;
};
int AB::total = 0;
1.实例化 ↓4.
AB a(6);
std::cout <<"会调用1次构造函数"<< std::endl;
std::cout <<"值:"<< a.x<< std::endl;
2.指向对象的指针 ↓5.
AB *q; //q 存地址变量
q = new AB();
std::cout <<"会调用1次构造函数"<< std::endl;
std::cout <<"值:"<< q->x<< std::endl;
delete q;
3.静态【对象】数组
AB s[4]; //一个【存着类AB的对象的】数组
std::cout <<"会调用4次构造函数"<< std::endl;
std::cout <<"值:"<< s[0].x<< std::endl;
4.动态【对象】数组
AB *d = new AB[4]; //["AB对象","AB对象"...] AB对象 ↑1.
std::cout <<"会调用4次构造函数"<< std::endl;
std::cout <<"值:"<< d->x<< std::endl;
std::cout <<"值:"<< d[0].x<< std::endl;
delete[] d;
5.静态【指针】数组
AB *p[2]; //["指向AB的指针0","指向AB的指针1"] 指向AB的指针是 ↑2.
std::cout <<"会调用0次构造函数"<< std::endl;
for (int i = 0; i<2; i++){
p[i] = new AB(i);
}
std::cout <<"会调用2次构造函数"<< std::endl;
std::cout <<"值:"<< p[0]->x<< std::endl;
std::cout <<"值:"<< p[1]->x<< std::endl;
for (int i = 0; i<2; i++){
delete p[i];
}
输出结果
已调用1次
会调用1次构造函数
值:6
已调用2次
会调用1次构造函数
值:2
已调用3次
已调用4次
已调用5次
已调用6次
会调用4次构造函数
值:2
已调用7次
已调用8次
已调用9次
已调用10次
会调用4次构造函数
值:2
值:2
会调用0次构造函数
已调用11次
已调用12次
会调用2次构造函数
值:0
值:1
AB *p[4]调用 0 次构造函数,AB b[4] 4 次。