TestClass类定义如下: class TestClass { private: intid; char gender; char*phone; public: TestClass ():id(0),ge

admin2012-01-20  19

问题  TestClass类定义如下:    class TestClass    {    private:    intid;    char gender;    char*phone;    public:    TestClass ():id(0),gender(’#’),phone(NULL){)    TestClass(int no,char ge=’#’,char *ph=NULL)    {id=no;gender=ge;phone=ph;}    };    下面类对象定义语句中错误的是(    )。

选项 A、TestClass myObj(i);  
B、TestClass myObj(2,"11101111155");  
C、TestClass myObj(1,’m’);
D、TestClass myObj;

答案B

解析 B) 中由于有两个参数,所以其调用了第二个构造函数,第二个构造函数的两个缺省参数,在调用时,实参会按从左到右的顺序传给形参,所以第二个参数“11101111155”会传递给形参ge,而原型中的ge为字符型,实参为指向字符的指针,所以在编译时会出现错误。A) 与C) 都能够正确的实现参数的传递。对于D) ,由于在创建TestClass的实例myObji时,没有参数,所以其调用了第一个构造函数。
转载请注明原文地址:https://kaotiyun.com/show/YDVp777K
0

最新回复(0)