C++问题关于“类”的选择题

[单选题]若有如下的定义:classty{public:intn;voidprint(){cout<<n;}}x,*p=&x;则下列表达式中,____________是错... [单选题]若有如下的定义:
class ty
{ public:
int n;
void print() { cout<<n;}
}x,*p=&x;
则下列表达式中,____________是错误的。
(A)、 x.n=5

(B)、 p.n

(C)、 (*p).print( )

(D)、 p->n=5
展开
 我来答
wang433
2010-07-05 · TA获得超过969个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:121万
展开全部
class ty
{ public:
int n;
void print()
{ cout<<n;}
}x,*p=&x;
则下列表达式中,____________是错误的。

(A)x.n=5 //x是ty类的一个"对象",所以引用对象的成员时可以用分量运算符(.),正确;
(B) p.n //这是"错误"的,因为p是对象指针,通过对象指针使用成员,只有两种方法:(1) p->n,这里表示p指向的对象的成员n (2)(*p).n,这里*p是对指针p取值,等同于"对象"
(C)(*p).print( ) //这是正确的,道理同(B)
(D)p->n=5 //这是正确的,道理同(B)
本题主要考察引用对象(其实就是类的变量或实例)的成员方法,通过对象指针与通过对象(变量)引用是不同的.
分量运行符(.) 在程序设计中有"....的..."的意思,如: a.name 表示对示"对象a 的 姓名"
如果有一个对象指针(如p),则:p.name的意思是"指针p的姓名",这是错误的,因为指针实际上是一个整型值,指针就是指针,其中不含任何分量.
但是可以这样用:p->name,意思是"指针p指向的对象的姓名".
玻璃棱镜
2010-07-05 · TA获得超过1865个赞
知道小有建树答主
回答量:729
采纳率:0%
帮助的人:765万
展开全部
B是错误的,因为p是一个指向ty类的指针,它自己没有成员变量。所以不能用.而应该用->。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongdongzoo9
2010-07-05 · TA获得超过152个赞
知道答主
回答量:42
采纳率:0%
帮助的人:61.5万
展开全部
B错了。
因为通过对象调用类的成员函数的方式有:
1.通过普通对象加.运算符来完成,如:x.print();((*p).print()相当于类的对象的调用)。
2.通过指向该类的对象的指针通过->运算符来完成,如p->print();
指针不能通过.运算符调用成员函数或数据: p.n的调用方法是错的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无尽的华尔兹Cluw3
2010-07-05 · TA获得超过157个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:0
展开全部
B 错误,原因是P是指针,要->符号才对,C:(*p).print( ) 为什么对呢,因为是解引用,取地址值,所以用点。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
语言追求者
2010-07-05 · TA获得超过192个赞
知道答主
回答量:152
采纳率:0%
帮助的人:0
展开全部
选B。应为p->n;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
handsomeIven
2010-07-05 · TA获得超过171个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:149万
展开全部
B错误!
因为p是指针,所以必须用->才能引用成员变量,故D正确而B错误。
A中x是ty类的一个对象,所以用.引用,即x.n。
C中(*p)相当于x,所以(*p).print( ) 是正确的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式