单选题
有如下程序: #include<iostream> using namespace std; class Name{ char name[20]; public: Name(){ strcpy(name,''''); cout<<'?'; } Name(char *fname){ strew(name,fname); cout<<'?'; } }; int main() { Name names[3]={Name(''张三''),Name(''李四'')}; return 0; } 运行此程序输出符号?的个数是( )。
【正确答案】
D
【答案解析】解析:类Name有两个构造函数,在默认构造函数中,给字符数组name赋空值,并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把nanle[2]的值赋为空值。这时会输出三个“?”符号。