【问题标题】:Regarding this Pointer in C++ [duplicate]关于 C++ 中的这个指针 [重复]
【发布时间】:2021-10-11 19:40:15
【问题描述】:

我正在学习 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 的值。

【问题讨论】:

  • 顺便说一句 #include&lt;bits/stdc++.h&gt; using namespace std; 表示一本坏书/老师。你修改 x 然后你创建一个副本,所以副本也有 1000 到 x。
  • 好的,这意味着它首先创建一个复制对象,然后从原始 p 复制值。所以这意味着我没有从 setX 返回原始对象,而是返回 p 的副本。如果我错了,请纠正我?

标签: c++ class pointers this


【解决方案1】:

我从 setX 返回指针对象

不,你不是。您正在返回类 Point 的一个实例。

为什么我的答案是 1000

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

【讨论】:

  • 好的,这意味着在 setX 内部,将创建 Point 类的对象,并且将从原始对象中复制值。这就是为什么 getX() 给出的答案是 1000。
猜你喜欢
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2013-03-29
  • 2013-03-11
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多