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;
}
} 展开
#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;
}
} 展开
3个回答
展开全部
#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;
}
}
展开全部
调用默认构造函数 不能加括号, 除非是在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 一个对象
在本例中,由于你后面使用了引用操作符,所以你改成第一或第二种方法来实例化这个
对象都是对的
如果你加了括号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 一个对象
在本例中,由于你后面使用了引用操作符,所以你改成第一或第二种方法来实例化这个
对象都是对的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main()
{
book c; //不要带括号
{
book c; //不要带括号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询