关于 C++ 中的这个指针 [重复]

Regarding this Pointer in C++ [duplicate]

提问人:Deepak soni 提问时间:8/7/2021 最后编辑:MatDeepak soni 更新时间:8/7/2021 访问量:54

问:

我正在学习 C++ 中的这个指针,它包含类对象的地址。但是我在理解我的代码时遇到了问题。

#include<bits/stdc++.h>
using namespace std;
class Point
{
    private:
        int x,y;
    public:
        Point(int x, int y)
        {
            this->x = x;
            this->y = y;
        }
        
        Point setX(int x)
        {
            this->x = x;
            return *this;
        }
        Point setY(int y)
        {
            this->y = y;
            return *this;
        }
        int getX()
        {
            return x;
        }
        int getY()
        {
            return y;
        }
};
int main()
{
    Point p(10,20);
    cout<<p.getX()<<" "<<p.getY()<<endl;
    cout<< p.setX(1000).getX();
    return 0;
}

我正在从 setX 返回指针对象。p.setX 将首先修改 x 的值,然后从中返回 object(p) 的副本。 既然这是一个副本,那么为什么我的答案是 p.setX(1000).getx() 中的 1000。由于 setX 将修改原始对象 p 中 x 的值。

C++ 指向 这个

评论

0赞 Michael Chourdakis 8/7/2021
顺便说一句,这是一本坏书/老师。您修改 x,然后创建一个副本,因此该副本也有 1000 到 x。#include<bits/stdc++.h> using namespace std;
0赞 Deepak soni 8/7/2021
好的,这意味着它首先创建一个复制对象,然后从原始 P 复制值。所以这意味着我没有从 setX 返回原始对象,而是返回 p 的副本。如果我错了,请纠正我?

答:

0赞 eerorika 8/7/2021 #1

我正在从 setX 返回指针对象

不,你不是。您返回的是类的实例。Point

为什么我的答案是1000

因为您返回其成员值为 1000 的对象的副本。

评论

0赞 Deepak soni 8/7/2021
好的,这意味着在 setX 中,将创建 Point 类的对象,并从原始对象复制值。这就是为什么 getX() 给出的答案是 1000。