这道关于C++的this指针的选择题,能不能给我举几个具体的例子?

关于this指针的说法不正确的是()A)不能在程序中修改this指针B)this指针可以给其他指针赋值,但不能修改this指针C)静态成员函数中没有this指针D)thi... 关于this指针的说法不正确的是()
A)不能在程序中修改this指针
B)this指针可以给其他指针赋值,但不能修改this指针
C)静态成员函数中没有this指针
D)this指针可以被赋值

正确答案选D

对于这道题我有如下两个问题:
1、对B选项,我的理解是,this指针不是指向的是类的对象吗?那如果不对运算符进行重载如何给其他指针赋值呢?能不能举几个具体的例子?

2、this指针为什么不能被赋值?

我是个刚学C++的新手,麻烦讲的通俗些详细些,谢谢了~
展开
 我来答
帐号已注销
2013-03-19 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1237万
展开全部
this指针是指向当前调用此成员函数的对象的。实际上每个成员函数都有一个秘密参数,这个参数就是this了,它是一个*const指针,即指针所指向的对象可以改变,但是指针本身不可改变,该参数编译时由编译器添加。
如:
class A {
public:
void do() {} //实际上应该是这样的 void A::go(A *const this);
};

int main() {
A a;
a.go(); //编译时变成这样的: A::go(&a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackwind1987
2013-03-19 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:490万
展开全部
跟运算符重载一点关系都木有
this指针是类成员函数内才能使用的一种特殊指针,指向的是自己这个对象。
class Cat {
public:

void walk() {

cout << this->name << endl; // 当然这里直接写name也可以。

}
void fight(Cat* other) { // 打架函数

if (other != this) { // 这里判断打架的对象是不是自己,是自己就不打了

cout << "fight with " << other->name << endl;

}
}
private:

string name;

};

至于第二个问题,this的含义就是指向自己,如果能修改this指向的内容,那么就有可能不指向自己了,导致混乱,所以语法规定不能修改this。

这道题AB说的是一个意思,和D相反,一看就是选D哈
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2013-03-19 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:494万
展开全部
this指针指向的是自己 ,如果能改指其它对象,那就不叫this了,可以赋值 给别的指针,这没问题,是可以的
那如果不对运算符进行重载如何给其他指针赋值呢????
能给其它指针赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式