所以我今天正在学习一些课程,我对如何显示功能感到困惑
dateType::dateType()
{
cout<<"Object Created\n";
}
void dateType::setDate()
{
cout<<"Enter Month: ";
cin>>month;
cout<<endl;
cout<<"Enter Date: ";
cin>>day;
cout<<endl;
cout<<"Enter Year: ";
cin>>year;
cout<<endl;
}
.....
//other function declaration to access the private
.....
void dateType:: printdate()
{
cout<<"Month: "<<month<<endl;
cout<<"Date: "<<day<<endl;
cout<<"Year: "<<year<<endl;
cout<<"Leap Year: \n"<<endl;
}
dateType::~dateType()
{
cout<<"Object Deleted";
}
int main()
{
dateType().setDate();
dateType().printdate();
return 0;
}
现在当我运行程序时它工作正常,但问题是构造函数和析构显示两次。
答案 0 :(得分:2)
这是因为在调用setDate()方法之后会破坏您创建的对象,因为main中没有标识符。你刚刚创建它,称为方法,然后它结束了。 你做了:
dateType().setDate()
;
所以当你做dateType()时会创建dataType对象。但是在调用setDate()方法之后,它被销毁了,因为你没有把它保存到任何地方。
尝试做:
dateType p;
p.setDate();
这次它不会被摧毁。