回 帖 发 新 帖 刷新版面

主题:[讨论]今天十道题做错的几道及不明白的

若有如下类定义:
class Sample
{  public:
Sample() {value=0;}
Set(int k) {value=k;}
   private:
int value;
};
Sample *p, obj; 
p=&obj;
则对下列语句序列正确的描述是:
A.语句p=&obj;是把对象obj赋值给指针变量p    B.语句Sample *p, obj;会调用两次类Sample的构造函数
C.对语句*p.Set(5)的调用是正确的    D.语句p->Set(5)与语句obj.Set(5)等价
正确:您选择的是D //这个解释一下c错在哪里吧

回复列表 (共7个回复)

沙发

运算符的优先级和左右问题

板凳

摆脱能说得清楚一点吗?如果这样我就能明白的话我也不用拿出来问了

3 楼

(*p).set(5);

4 楼

写上这个有意思吗?如果我要是能写上这个就能懂的话我就不用发帖自问了吧?

5 楼

建议楼主去看一下优先级问题 不要伤了回答的人感情

6 楼

*p.Set(5)
小弟不才,个人看法:
*操作符优先级小,所以系统默认先p.Set(5),然后在调用星号操作符,
而p.Set是错误的用法,所以不对

不知道解答是否正确,望高人指点

7 楼

6楼正解,
*号优先级小于.
因此编译器会先编译p.set(5)语句,会认为是非法语句而编译通不过.
使用()来指定编译顺序.

我来回复

您尚未登录,请登录后再回复。点此登录或注册