c++错误问题

[复制链接]
查看11 | 回复2 | 2009-11-9 21:20:08 | 显示全部楼层 |阅读模式
这是C++的经典问题在包含指针的类中,由于没有重载=运算符,或者定义拷贝构造函数,在对象赋值后,两个对象中的指针指向了同一个地址,而导致,调用两个对象的析构函数时,对同一个地址删除了多次。所以,在任何包含指针的类中,最好要重载=运算符,或提供拷贝构造函数。
回复

使用道具 举报

千问 | 2009-11-9 21:20:08 | 显示全部楼层
你的Scanf函数根本就没形式参数,你在调用的时候给出了参数,这是不对的,这就导致你的对运算符的重载出现问题,你再看看改改,大体上是没什么问题的,因为程序很简单,就只是想做一个运算符的重载!
回复

使用道具 举报

千问 | 2009-11-9 21:20:08 | 显示全部楼层
using namespacec std;#include下面一行加using namespacec std;即可。。不载入std域,你怎么可能cout====程序改为=====#includeusing namespace std;class Matrix{private: int m; int n; int *Mat;public: Matrix(int x,int y) { m=x;n=y;Mat=new int[m*n+1]; } ~Matrix() {delete []Mat;} void ScanfM() {for(int i=0;i>Mat; } void ScanfM(int x) {for(int i=0;i<m*n;i++) Mat=x+i; } void PrintM() {for(int j=0;j<m;j++) {for(int i=0;i<n;i++) cout<<Mat[j*n+i]<<"";cout<<"\n";} } friend Matrix operator+(Matrix x, Matrix y) {Matrix z(x.m,x.n);for(int i=0;i<(x.m)*(x.n);i++) z.Mat=x.Mat+y.Mat;return z; }};int main(){ Matrix a(2,3),b(2,3),c(2,3); c=(a+b); a.ScanfM(3); b.ScanfM(7); a.PrintM(); b.PrintM(); c=a+b;c.PrintM();}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行