if(final.isLeap()==1)为什么输出值一直不变?

#include<iostream>
using namespace std;
class DDate{
	private:
		int year;
		int month;
		int day;
	public:		DDate(int a,int b,int c): year(a),month(b),day(c){
			
		}
		int isLeap();
}; 
int DDate::isLeap(){
	int ret;
	if(year%4==0&&year%100!=0||year%400==0){
		ret = 1;
	}else{
		ret = 0;
	}
		return ret;
}
int main(){
	int year;
	int month;
	int day;
	DDate final(year,month,day);
	cin>>year>>month>>day;
	int x;
	if(final.isLeap()==1){
		cout<<"yes"<<endl;
	}else{
		cout<<"no"<<endl;
	}
	return 0;
}

 

因为你的构造函数赋值是在输入之前进行的

应该写成

	cin>>year>>month>>day;	
	DDate final(year,month,day);