c++ - 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;
}
解决方案
该错误只是一个小错字:您必须编写new int
而不是int new
. 但是,您的代码有一个逻辑错误,这就是这一行:
x = a;
由于x
和a
都是指针类型,您将指针(而不是它指向的值)分配给x
. 这样一来,x
刚刚分配的整数的原始值就丢失了,在析构函数中,你要delete
a
!要解决此问题,您必须将值a
点分配给整数x
点。这是通过取消引用运算符完成的:
*x = *a;
此外,在 中使用解引用运算符print()
:
cout << *x;
推荐阅读
- ios - Vue 站点的 Webpack url-loader PDF 数据 URI 链接在 iOS 14 中停止工作
- java - Java EntityManager 抛出 NullPointerException
- c++ - 没有匹配的函数调用...(使用模板和指针)
- c# - 如何在测试 ASP.NET Core 应用程序时使用 EF Core 使用 InMemory 数据库将数据播种到 DbContext?
- python - 如何在绘图内放大
- vue.js - 如何使用带有数组长度的 v-if
- python - 从创建的列表中过滤数据
- python - 为什么“find()”方法只返回第一个值?我怎样才能得到所有的值?
- c - 数组替换我不想要的元素
- wordpress - 如何正确使用 ngrok 隧道以获得最佳工作流程与 wordpress 和 docker compose yml