永发信息网

c++类的多个构造函数

答案:5  悬赏:60  手机版
解决时间 2021-03-23 01:11
  • 提问者网友:孤山下
  • 2021-03-22 11:33
#include
using namespace std;
class date
{
int day,month,year;
public:
date(char *str);
date(int m,int d,int y);
date::date();
void show();
};
date::date(char *str)
{
scanf(str,"%d%*c%d%*c%d",&month,&day,&year);
}
date::date(int m,int d,int y)
{
day=d;
month=m;
year=y;
}
date::date()
{
cout< cin>>day;
cin>>month;
cin>>year;
}
void date::show()
{
cout< cout<}
main()
{
//构造函数的参数为字符串类型
date sdate("11/1/1999");
//构造函数的参数为三个整数
date idate(12,2,1998);
//构造函数没有参数,数据通过键盘直接输入
date indate;
sdate.show();
idate.show();
indate.show();
return 0;
}
最佳答案
  • 五星知识达人网友:上分大魔王
  • 2021-03-22 12:35



#include
using namespace std;
class date
{
int day,month,year;
public:
date(char *str);
date(int m,int d,int y);
date();
void show();
};
date::date(char *str)
{
scanf(str,"%d%*c%d%*c%d",&month,&day,&year); //此处有错误,month,day,year没有被赋值。
}
date::date(int m,int d,int y)
{
day=d;
month=m;
year=y;
}
date::date()
{
cout<cin>>day;
cin>>month;
cin>>year;
}
void date::show()
{
cout<cout<}
int main()
{
//构造函数的参数为字符串类型
date sdate("11/1/1999");
//构造函数的参数为三个整数
date idate(12,2,1998);
//构造函数没有参数,数据通过键盘直接输入
date indate;
sdate.show();
idate.show();
indate.show();
return 0;
}
全部回答
  • 1楼网友:举杯邀酒敬孤独
  • 2021-03-22 17:12
有什么问题吗?
  • 2楼网友:山君与见山
  • 2021-03-22 15:33
类的转换函数,形式如下 class a { operator type(); } 意思是将类 a 的对象转换为 type 类型 这个函数没有参数,没有返回值,因为: 函数参数不需要,就是对象自己 函数返回值不需要,就是函数名 举个实例,直接编译运行一下,你应该不会再有疑问了: #include &lt;iostream&gt; using namespace std; class a { public: a(char* str):strname(str){} operator char*() { cout &lt;&lt; &quot;转换函数被调用了&quot; &lt;&lt; endl; return strname; } private: char* strname; int i; }; void f(char* str) { cout &lt;&lt; str &lt;&lt; endl;; } int main(int argc, char *argv[]) { a a(&quot;hello world!&quot;); f(a); return 0; }
  • 3楼网友:患得患失的劫
  • 2021-03-22 14:08
#include #include using namespace std; class date { int day, month, year; public: date(); date(char *str); date(int m,int d,int y); void show(); }; date::date(char *str) { cout< scanf("%d%*c%d%*c%d",&month,&day,&year); } date::date(int m,int d,int y) { day=d; month=m; year=y; } date::date() { cout< cin>>day; cin>>month; cin>>year; } void date::show() { cout< cout<} main() { //构造函数的参数为字符串类型 date sdate("11/1/1999"); //这里会传递“11/1/1999”给你定义的形式参数str,但是没有实际的意义。 //“11/1/1999”不能传递给你的私有成员变量 //构造函数的参数为三个整数 date idate(12,2,1998); //构造函数没有参数,数据通过键盘直接输入 ,就是使用默认构造函数。 date indate; sdate.show(); idate.show(); indate.show(); return 0; }
  • 4楼网友:不甚了了
  • 2021-03-22 13:04
你的程序的不足是构造函数date(char *str) 中没有把字符串str中的月、日、年分开,然后赋给成员month、day和year,所以系统输出随机值! 想要实现你的功能,参看下面这个程序!已编译运行。 #include //加头文件,包含函数 atoi() #include //加头文件,包含string类 #include using namespace std; class date { int day,month,year; public: date(char *str); date(int m,int d,int y); date::date(); void show(); }; date::date(char *str) { // str = " 11/1/1999"; string m(str+0,str+2); //截取字符串str中的1、2个字符 string d(str+3,str+4); //截取字符串str中的3个字符 string y(str+5,str+9); //截取字符串str中的5、6、7、8个字符 month = atoi( m.c_str() ); //m.c_str() 把string类型的字符串转化为 char*类型 day = atoi( d.c_str() ); // atoi( d.c_str() ) 把字符串char*转化为整数int类型 year = atoi( y.c_str() ); } date::date(int m,int d,int y) { day=d; month=m; year=y; } date::date() { cout< cin>>day; cin>>month; cin>>year; } void date::show() { cout< cout<} main() { //构造函数的参数为字符串类型 date sdate("11/1/1999"); //构造函数的参数为三个整数 date idate(12,2,1998); //构造函数没有参数,数据通过键盘直接输入 date indate; sdate.show(); idate.show(); indate.show(); return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯