有如下程序: #inciude <iostream> using namespace std; c1ass Name{ char name[20]; public: Name(){ strcpy(na

admin2020-11-11  12

问题 有如下程序:
    #inciude <iostream>
    using namespace std;
    c1ass Name{
    char name[20];
    public:
    Name(){
    strcpy(name,"");    cout<<’?’;
    }
    Name(char *fname){
    strcpy(name,fname);    cout<<’?’;
        }
    };
    int main(){
    Name names[3]={Name("张三"),Name("李四")};
    return 0;
    }
    运行此程序输出符号?的个数是(    )。

选项 A、0
B、1
C、2
D、3

答案D

解析 类Name有两个构造函数,在默认构造函数中,给字符数组name赋空值.并输出一个?;在带有字符指针的构造函数中,把字符指针fname所指的字符串赋给字符数组name,并输出一个?。所以在主函数中,定义了Name的三个对象,name[0]、name[1]、name[2],在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把name[2]的值赋为空值。这时会输出三个“?”符号。
转载请注明原文地址:https://kaotiyun.com/show/Qeyp777K
0

相关试题推荐
最新回复(0)