c++ 不带参数的构造函数 哪出问题了?

#include<iostream>#include<cstring>usingnamespacestd;classbook{charname[20];charchuba... #include <iostream>
#include <cstring>
using namespace std;
class book
{
char name[20];
char chubanshe[20];
char zhuozhe[20];
char time[20];
double price;
public:
book()//不带参数的构造函数有问题
{
strcpy(name,"name");
strcpy(chubanshe,"chuban");
strcpy(zhuozhe,"zhuo");
strcpy(time,"time");
price=0;
}
book(char name1[20],char chuban[20],char zhuo[20],char time1[20],double price1)
{
strcpy(name,name1);
strcpy(chubanshe,chuban);
strcpy(zhuozhe,zhuo);
strcpy(time,time1);
price=price1;
}
void show()
{
cout<<name<<" "<<chubanshe<<" "<<zhuozhe<<" "<<time<<" "<<"$"<<price<<endl;
}
bool operator==(book b)
{
if (strcmp(name,b.name)==0&&strcmp(chubanshe,b.chubanshe)==0&&strcmp(zhuozhe,b.zhuozhe)==0&&strcmp(time,b.time)==0&&price==b.price)
{
return 1;
}
else
{
return 0;
}
}
book& operator=(book b)
{
strcpy(name,b.name);
strcpy(chubanshe,b.chubanshe);
strcpy(zhuozhe,b.zhuozhe);
strcpy(time,b.time);
price=b.price;
return (*this);
}
bool operator<(book b)
{
if (price<b.price)
{
return 1;
}
else
{
return 0;
}
}
book& operator++()
{
price=price+1;
return (*this);
}
book operator++(int)
{
book old;
old=(*this);
++(*this);
return old;
}
};
void main()
{
book c();
book a("qwe","asd","zxc","qaz",99);
a.show();
c.show();
c=a;
a.show();
c.show();
if (a==c)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}

(a++).show();
c.show();

(++a).show();
c.show();
if (c<a)
{
cout<<"yes"<<endl;
}
else
{
cout<<"no"<<endl;
}

}
展开
 我来答
路易五十三
2013-10-31 · 超过15用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:43.5万
展开全部
#include <iostream>
#include <cstring>
using namespace std;
class book
{
 char name[20];
 char chubanshe[20];
 char zhuozhe[20];
 char time[20];
 double price;
public:
 book()//不带参数的构造函数有问题
 {
  strcpy(name,"name");
  strcpy(chubanshe,"chuban");
  strcpy(zhuozhe,"zhuo");
  strcpy(time,"time");
  price=0;
 }
 book(char name1[20],char chuban[20],char zhuo[20],char time1[20],double price1)
 {
  strcpy(name,name1);
  strcpy(chubanshe,chuban);
  strcpy(zhuozhe,zhuo);
  strcpy(time,time1);
  price=price1;
 }
 void show()
 {
  cout<<name<<" "<<chubanshe<<"  "<<zhuozhe<<" "<<time<<" "<<"$"<<price<<endl; 
 }
 bool operator==(book b)
 {
  if (strcmp(name,b.name)==0&&strcmp(chubanshe,b.chubanshe)==0&&strcmp(zhuozhe,b.zhuozhe)==0&&strcmp(time,b.time)==0&&price==b.price)
  {
   return 1;
  } 
  else
  {
   return 0;
  }
 }
 book& operator=(book b)
 {
  strcpy(name,b.name);
  strcpy(chubanshe,b.chubanshe);
  strcpy(zhuozhe,b.zhuozhe);
  strcpy(time,b.time);
  price=b.price;
  return (*this);
 }
 bool operator<(book b)
 {
  if (price<b.price)
  {
   return 1;
  } 
  else
  {
   return 0;
  }
 }
 book& operator++()
 {
  price=price+1;
  return (*this);
 }
 book operator++(int)
 {
  book old;
  old=(*this);
  ++(*this);
  return old;
 }
};
void main()

 book c();//写成book c;不要带括号啦。不知道你指的是不是这个问题?
 book a("qwe","asd","zxc","qaz",99);
 a.show();
 c.show();
 c=a;
 a.show();
 c.show();
 if (a==c)
 {
  cout<<"yes"<<endl;
 } 
 else
 {
  cout<<"no"<<endl;
 }

(a++).show();
 c.show();
 
 (++a).show();
 c.show();
 if (c<a)
 {
  cout<<"yes"<<endl;
 } 
 else
 {
  cout<<"no"<<endl;
 }

}
百度网友6a6aa8c
2013-10-31 · TA获得超过1483个赞
知道小有建树答主
回答量:707
采纳率:100%
帮助的人:728万
展开全部
调用默认构造函数 不能加括号, 除非是在new或者利用匿名对象创建拷贝构造函数的时候.
如果你加了括号book c(); 它就会把这句当作是声明了一个函数c, 其返回值是book类型.
你要实例化c这个对象,有以下几种方法

1.book c; //直接实例化对象
2.book c = book()//创建一个匿名对象,然后会自动调用拷贝构造函数,将数据复制给c
3.book *c = new book();//new 一个对象的时候可以加上括号
4.book *c = new book//new 一个对象

在本例中,由于你后面使用了引用操作符,所以你改成第一或第二种方法来实例化这个
对象都是对的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yyjie999
2013-10-31 · TA获得超过199个赞
知道小有建树答主
回答量:197
采纳率:100%
帮助的人:178万
展开全部
void main()
{
book c; //不要带括号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式