回 帖 发 新 帖 刷新版面

主题:新手求解

#include<iostream>
using namespace std;
class cow
{
    char name[20];
    char *hobby;
    double weight;
public:
    cow();
    cow(const char *nm,const char*ho,double wt);
    cow(const cow&);
    ~cow();
    cow & operator=(const cow &);
    void showcow()const;
};
cow::cow(const char* nm,const char*ho,double wt)
{
    strcpy(name,nm);
    strcpy(hobby,ho);
    weight=wt;
}
cow::cow(const cow &b)
{
    strcpy(name,b.name);
    strcpy(hobby,b.hobby);
    weight=b.weight;
}
cow & cow::operator=(const cow &c)
{
    strcpy(name,c.name);
    strcpy(hobby,c.hobby);
    weight=c.weight;
    return *this;
}
void cow::showcow()const
{
    cout<<name<<endl;
    cout<<hobby<<endl;
    cout<<weight<<endl;
}
cow::~cow(){};
cow::cow(){};
void main()
{
    cow xx("ck","fung",22);
    xx.showcow();
    cow xxx("ao","ko",222);
    xxx.showcow();
    xx=cow("bb","cc",44);
    xx.showcow();
    xx=xxx;
    xx.showcow();
}
调试时停止工作,,求解,,用的是visual studio2010;

回复列表 (共7个回复)

沙发

strcpy(hobby,ho);这一句就很搞笑,hobby还没指向分配的内存

板凳

[quote]strcpy(hobby,ho);这一句就很搞笑,hobby还没指向分配的内存[/quote]
----
把它改成是字符数组是可以通过编绎的;但是如果要想用指针要怎么改?

3 楼

[quote][quote]strcpy(hobby,ho);这一句就很搞笑,hobby还没指向分配的内存[/quote]
----
把它改成是字符数组是可以通过编绎的;但是如果要想用指针要怎么改?[/quote]
好歹分配下内存啊:)

4 楼

#include<iostream>
#include <cstring>

using namespace std;

class cow
{
  char name[20];
  char* hobby;
  double weight;
public:
  cow();
  cow(const char *nm, const char*ho, double wt);
  cow(const cow&);
  ~cow();
  cow & operator =(const cow&);
  void showcow()const;
};

cow::cow(const char* nm, const char* ho, double wt)
{
  strncpy(name, nm, 19);
  name[19] = 0;
  hobby = new char[strlen(ho) + 1];
  strcpy(hobby,ho);
  weight = wt;
}
cow::cow(const cow& b)
{
  strncpy(name, b.name, 19);
  name[19] = 0;
  hobby = new char[strlen(b.hobby) + 1];
  strcpy(hobby, b.hobby);
  weight = b.weight;
}
cow& cow::operator =(const cow& c)
{
  if(this != &c)
  {
    strncpy(name,c.name, 19);
    name[19] = 0;
    hobby = new char[strlen(c.hobby) + 1];
    strcpy(hobby, c.hobby);
    weight = c.weight;
  }
  return *this;
}
void cow::showcow()const
{
  cout << name << ", ";
  cout << hobby << ", ";
  cout << weight << endl;
}

cow::cow() : hobby(new char[1]), weight(0)
{
  name[0] = 0;
  hobby[0] = 0;
}

cow::~cow() { delete [] hobby; }

int main()
{
  cow xx("ck","fung",22);
  xx.showcow();

  cow xxx("ao","ko",222);
  xxx.showcow();

  xx = cow("bb","cc",44);
  xx.showcow();

  xx = xxx;
  xx.showcow();

  cow xxxx("abcdefghigklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 111);
  xxxx.showcow();

  cow x("55", "66", 55);
  x = xxxx;
  x.showcow();
}

5 楼

楼主是从Java跳到C++的吧?

6 楼

5楼精辟阿

7 楼

[quote]楼主是从Java跳到C++的吧?[/quote]
---
不是滴,就是c++没学好。

我来回复

您尚未登录,请登录后再回复。点此登录或注册