首页 > 解决方案 > c++复制参数值

问题描述

我想在动态内存分配后指定参数指向的值。但我得到一个错误。我该如何解决这个问题?

class Point
{
private:
     int *x;

public:

    Point(int *a)
    {
        x=int new;
        x=a;
    }
    ~Point()
    {
        if(x)
            delete x;
    }
    void print()
    {
        cout<<x;
    }
};

int main()
{
    int c=2;
    Point p(&c);
    p.print();
    return 0;
}

标签: c++

解决方案


该错误只是一个小错字:您必须编写new int而不是int new. 但是,您的代码有一个逻辑错误,这就是这一行:

x = a;

由于xa都是指针类型,您将指针(而不是它指向的值)分配给x. 这样一来,x刚刚分配的整数的原始值就丢失了,在析构函数中,你要delete a!要解决此问题,您必须将a分配给整数x。这是通过取消引用运算符完成的:

*x = *a;

此外,在 中使用解引用运算符print()

cout << *x;

推荐阅读