指针与类一起使用会返回垃圾值

Using Pointers In Conjunction With Classes Returns Garbage Values

本文关键字:返回 一起 指针      更新时间:2023-10-16

这是今天早些时候测试中的代码。语言:C + +。

class Shape
{ 
protected:
int *x;
int *y;
public:
void draw()
    {
      //we were supposed to add random code here.  
    }
};

要求创建自己选择的重载操作符,并在main中实现。我有点害怕指针,所以我决定创建一个这样的构造函数:

class Shape
{ 
protected:
int *x;
int *y;
public:
void draw()
    {
       cout<<*x<<endl;
    }
    Shape(){};
    Shape{int a, int b)
    {
        x = &a; //this I thought would allow *x to act just like a normal variable. 
        y = &b; 
    }
    //code for operator overloading.
};

我的印象是我已经在测试中取得了成功,但是当我继续并尝试在家里的计算机上实现它时,我意识到draw函数返回垃圾值/内存地址。其他一切都会因此受到影响。你能告诉我为什么会这样吗?这和指针的作用域有关吗?我想把指针当作常规变量来使用。我只是个学生。提前感谢!

如果这是c++,就像它看起来的那样,那么你的问题是你将指针赋值给构造函数的参数地址。

构造函数参数在调用构造函数时创建,在构造函数被销毁时销毁,因此,在构造函数被销毁后,指针将指向垃圾。将指针赋给非函数局部变量

将a和b放在堆栈中,并将x和y指针赋值给a和b的地址。这将使x和y指向堆栈中的某个位置,因此*x(和*y)的值就是堆栈中恰好在这些地址处的值。

相关文章: