求助 C语言程序设计 N行N列矩阵与向量相乘

求助 C语言程序设计 N行N列矩阵与向量相乘,第1张

float ret=0

for (int i=0i<Ni++)

  for (int j=0j<Nj++)

      ret+=x[i]*a[i][j]*y[j]

return(ret)

输入有两伍察伏个向量,视为一个行向量腔携没尺和一个列向量

你犯的错误是C++初学者很容易犯的一个错误。Vector中出现了个以int类型为参数构造函数,但没有一个春高基“拷贝构造函数”。你的multiply方法的反回值扒谨是Vector类型,当这个函数在返回时,会调用Vector的“拷贝构造函数”,编译器发现你没有自己定制一个“拷贝构造函数”,于是它自己给你加了一个默认的“拷贝构造函数”,这个默认的“拷贝构造函数”的默认行为就是按位来拷贝Vector对象,于是乎返回的个这Vector对象中的int* v成员就指向一个multiply栈中的数据,而这个数据在multiply返回后就变为无用的了。这就是“野指念档针”的一种形式,因为它指向了一个已经返回了的函数的栈中的数据,所以它会出错。

知道了原因后,解决方法很简单,自己定义Vector的“拷贝构造函数”,然后将int* v指向的数据再拷贝一份。即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12514091.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存