这道关于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++的新手,麻烦讲的通俗些详细些,谢谢了~ 展开
A)不能在程序中修改this指针
B)this指针可以给其他指针赋值,但不能修改this指针
C)静态成员函数中没有this指针
D)this指针可以被赋值
正确答案选D
对于这道题我有如下两个问题:
1、对B选项,我的理解是,this指针不是指向的是类的对象吗?那如果不对运算符进行重载如何给其他指针赋值呢?能不能举几个具体的例子?
2、this指针为什么不能被赋值?
我是个刚学C++的新手,麻烦讲的通俗些详细些,谢谢了~ 展开
3个回答
展开全部
this指针是指向当前调用此成员函数的对象的。实际上每个成员函数都有一个秘密参数,这个参数就是this了,它是一个*const指针,即指针所指向的对象可以改变,但是指针本身不可改变,该参数编译时由编译器添加。
如:
class A {
public:
void do() {} //实际上应该是这样的 void A::go(A *const this);
};
int main() {
A a;
a.go(); //编译时变成这样的: A::go(&a);
}
如:
class A {
public:
void do() {} //实际上应该是这样的 void A::go(A *const this);
};
int main() {
A a;
a.go(); //编译时变成这样的: A::go(&a);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
跟运算符重载一点关系都木有
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哈
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哈
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
this指针指向的是自己 ,如果能改指其它对象,那就不叫this了,可以赋值 给别的指针,这没问题,是可以的
那如果不对运算符进行重载如何给其他指针赋值呢????
能给其它指针赋值
那如果不对运算符进行重载如何给其他指针赋值呢????
能给其它指针赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询