
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指向的数据再拷贝一份。即可。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)