类MyClass的定义如下: class MyClass { public: MyClass() { value=0; } setVariable(int i)

admin2013-05-30  34

问题 类MyClass的定义如下:    class MyClass    {    public:       MyClass()       {          value=0;       }       setVariable(int i)       {           value=i;       }    private:       int value;    };    则以下各项对如下语句序列的描述中,正确的是(    )。    MyClasS  *p,my;    p=&my;

选项 A、语句“p=&my;”是把对象my赋值给指针变量p
B、语句“MyClass *p,my;”会调用两次类MyClass的构造函数
C、对语句“*p.SetVariable(5)”的调用是正确的
D、语句“p->SetVariable(5)”与语句“my.SetVariable(5)”等价

答案8

解析 对于选项A,由于表达式“p=&my;”只是把对象my的地址赋值给指针变量p,而不是对象my本身。所以选项A的描述是错误的。
   对于选项B,语句“MyClass*p,my;”仅调用一次类MyClass的构造函数,因为指针 p本身不定义类对象,而是定义了p可以指向一个MyClass的对象,所以在定义指针对象时系统不会调用类的构造函数。所以选项B的描述也是错误的。
   对于选项C,根据运算符的优先级,语句“*p.SetVariable;”等价于“*(p.SetVariable)”,显然这与原来的语句不同,正确的调用方式是(*p).SetVariable。所以选项C的描述也是错误。
   对于选项D,由于p是对象指针,所以调用p的成员要用符号“->”。而my是一般的类对象,所以调用my的成员用“.”符。所以选项D是正确。
转载请注明原文地址:https://kaotiyun.com/show/oQNp777K
0

最新回复(0)