当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-05 10:58 
头像

注册: 2009-03-19 8:39
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
代码:
//cs.cpp
#include<iostream>
#include<stdlib.h>
#include<ctime>
#include<fstream>
using namespace std;

class Matrix
{
public:
   Matrix(int m=0,int n=0)
      :row(m),col(n)
   {
      if(row<=0||col<=0) x=NULL; return;
      x=new double[row*col];
      for(int i=0;i<row*col;i++)
         x[i]=0;
   }
   Matrix(const Matrix &mat)
      :row(mat.row),col(mat.col)
   {
      x=new double[row*col];
      for(int i=0;i<row*col;i++)
         x[i]=mat.x[i];
   }
   ~Matrix()
   {
      if(x!=NULL) delete []x;
   }
   void Set()
   {
      time_t t;
      srand(time(&t));
      for(int i=0;i<row*col;i++)
         x[i]=rand()%10;
   }
   int Save(const char *fn)
   {
      ofstream outfile(fn);
      outfile<<row<<" "<<col<<endl;
      for(int i=0;i<row;i++)
      {
         outfile<<x[i*col];
         for(int j=1;j<col;j++)
         {
            outfile<<" "<<x[i*col+j];
         }
         outfile<<endl;
      }
      outfile.close();
      return 0;
   }
private:   
   int row,col;
   double *x;
};

int main()
{
   int m,p,n;
   time_t t;
   srand(time(&t));
   m=rand()%50;
   p=rand()%50;
   n=rand()%50;
   
   Matrix a(m,p);
   a.Set();
   a.Save("1.txt");
   Matrix b(p,n);
   b.Set();
   b.Save("2.txt");
   return 0;
}
我用gdb调试的话,总是说x[i]=rand()%10;语句有问题,但是我看不出来啊
帮忙看一下
谢谢


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-05 13:45 
头像

注册: 2009-05-30 15:52
帖子: 46
地址: DL LIAONING CHN
送出感谢: 0 次
接收感谢: 0 次
引用:
if(row<=0||col<=0) x=NULL; return;

//大大的mistake,记住类的构造函数是不能带返回语句的 :em20 :em20


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-05 13:57 
头像

注册: 2009-03-19 8:39
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
谢谢ls这位,太感谢了呀
其实我的想法不是
代码:
if(row<=0||col<=0) x=NULL; return;

我的本意是
代码:
if(row<=0|| col<=0){x=NULL; return;}

我重新修改后正确了
再次感谢


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-05 14:03 

注册: 2007-10-27 1:04
帖子: 403
送出感谢: 0 次
接收感谢: 1
引用:
//大大的mistake,记住类的构造函数是不能带返回语句的


不要把小孩子教坏了。

只要是函数,都可以带return语句。至于返回的类型则是不同。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-05 14:43 
头像

注册: 2009-03-19 8:39
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
我是没有将return语句包含在if的条件分支结构中,这样的话,每次调用构造函数即使不满足if的判断语句,构造函数还是return了,根本就没有完成所有数据成员的构造工作,所以出错了


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-07 23:54 
头像

注册: 2009-05-30 15:52
帖子: 46
地址: DL LIAONING CHN
送出感谢: 0 次
接收感谢: 0 次
引用:
引用:
//大大的mistake,记住类的构造函数是不能带返回语句的


不要把小孩子教坏了。

只要是函数,都可以带return语句。至于返回的类型则是不同。

强调一下下,类的构造函数没有返回值,但也没有被声明为VOID,实际上就是说构造函数没有声明类型。至今为止,我还没有接触到有return语句的构造函数。嗯?
//CLASS BAD
template <typename T*>
class bad_{
public:
bad_(){
//return empty,that's OK
return;
}
//something
private:
T* data;
};


最后由 xiaocheng_zh 编辑于 2009-07-08 0:39,总共编辑了 1 次

页首
 用户资料  
 
7 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-08 0:00 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
xiaocheng_zh 写道:
引用:
引用:
//大大的mistake,记住类的构造函数是不能带返回语句的


不要把小孩子教坏了。

只要是函数,都可以带return语句。至于返回的类型则是不同。

强调一下下,类的构造函数没有返回值,但也没有被声明为VOID,实际上就是说构造函数没有声明类型。至今为止,我还没有接触到有return语句的构造函数。嗯?


没有返回值和不能返回是两回事


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 写了一段C++程序,能够编译,但是运行总是出错。
帖子发表于 : 2009-07-08 0:43 
头像

注册: 2009-05-30 15:52
帖子: 46
地址: DL LIAONING CHN
送出感谢: 0 次
接收感谢: 0 次
I see!
3Q


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 8 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译