#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;
}
c++类的多个构造函数
答案:5 悬赏:60 手机版
解决时间 2021-03-23 01:11
- 提问者网友:孤山下
- 2021-03-22 11:33
最佳答案
- 五星知识达人网友:上分大魔王
- 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 <iostream> using namespace std; class a { public: a(char* str):strname(str){} operator char*() { cout << "转换函数被调用了" << endl; return strname; } private: char* strname; int i; }; void f(char* str) { cout << str << endl;; } int main(int argc, char *argv[]) { a a("hello world!"); 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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯